Server Unit pokreće cijeli glasovni sistem za jednog klijenta: obradu poziva, prepoznavanje, jezički model i sintezu govora. Svaka jedinica nosi 100 istovremenih poziva. Prije nego što taj broj uđe u ugovor, treba ga provjeriti, pa smo napravili test opterećenja i pokrenuli ga dvaput.
Željeli smo da saznamo nosi li jedinica svojih nazivnih 100 poziva sa odgovorima koji i dalje zvuče kao razgovor i kako se ponaša preko njih, na 120%, 150% i 176%.
Mjereno na jednom Server Unit sa agentom za regrutaciju i simuliranim pozivaocima na istoj jedinici, preko G.711 A-law kroz mjerni most: 22 koraka opterećenja u 9 serija, 22.018 odgovora, oko 129 sati razgovora. Opterećenje je dato kao udio nazivnog kapaciteta (100 istovremenih poziva), a vrijeme odgovora kao indeks, gdje jedan poziv iznosi 1,00.
Ukratko: srednje vrijeme odgovora ostaje u ocjeni Standard ili boljoj do nazivnog kapaciteta, a sa ranim startom do oko 117%. Na 176% svi pozivi su se povezali i nijedan nije pao. Više od 99% replika pozivalaca dobilo je odgovor na svakom koraku, a jedan krug optimizacije za visoko opterećenje udvostručio je opterećenje koje jedinica nosi u ocjeni Standard.
Kako smo mjerili
- Simulirani pozivaoci na istoj jedinici. Svaki razgovor su dva telefonska poziva: agent koji se testira i simulirani pozivalac. Dvadeset simuliranih pozivalaca, svaki sa svojim glasom, manirom i raspoloženjem, pita za posao, pravi pauze i odgovara kao ljudi. Server Unit nosi obje strane svakog razgovora, pa je telefonsko opterećenje dvostruko veće nego što bi ga stvarni razgovor iste veličine stvorio.
- Realne zavisnosti. Spoljni sistemi koje agent poziva odgovaraju nakon fiksnog, realnog kašnjenja.
- Jedan časovnik na liniji. U audio putanji je mjerni most. On bilježi trenutak kada pozivaočeva fraza završava i trenutak kada stiže prvi zvuk agentovog odgovora. Vrijeme odgovora je taj interval. Obuhvata sve unutar jedinice, uključujući pauzu za kraj replike i prenos zvuka.
- Koraci. Opterećenje raste u koracima od jednog razgovora do 176% nazivnog kapaciteta. Svaki korak se dvije minute stabilizuje, a zatim se mjeri najmanje pet. Korak sa jednim razgovorom traje dvadeset.
- Korak mora zaslužiti mjesto. Korak se računa samo ako prođe osam provjera: stabilno stanje (druga polovina nije sporija od prve), neuspjele replike, ispravnost mjernog mosta, preklapanje govora, usklađenost događaja mosta sa zapisom agenta, izgubljena telemetrija, odbijeni pozivi i ograničavači resursa.
- Dva režima. Agenta smo mjerili u standardnom režimu i sa ranim startom, u kojem jezički model počinje da radi na prepoznatom tekstu prije nego što je replika formalno zatvorena.
Šta se dogodilo
Pojasevi opterećenja
Ocjene opisuju kako odgovor doživljava pozivalac. Svaka ocjena završava na određenom indeksu vremena odgovora.
| Pojas opterećenja | Opterećenje, % nazivnog kapaciteta | Ocjena odgovora | Indeks do | Šta pozivalac primjećuje |
|---|---|---|---|---|
| Nisko | do 42 | Platinum | 1,22 | Odgovori stižu blizu brzine jednog poziva |
| Umjereno | 42–65 | Gold | 1,49 | Brz odgovor |
| Visoko | 65–100 | Standard | 2,03 | Prirodna pauza; ovaj pojas završava na nazivnom kapacitetu |
| Vrhunac | 100–137 | Minimum | 2,71 | Primjetna pauza, ali i dalje razgovor |
| Nalet | 137–176 | Stretch | — | Duža pauza, uz sve pozive i dalje povezane |
Sa ranim startom svaki pojas se proteže dalje: Platinum do oko 57% nazivnog kapaciteta, Gold do oko 78%, Standard do oko 117%. Rani start smo mjerili do 128% nazivnog kapaciteta.
Nazivni kapacitet je ispunjen
Na 100 istovremenih poziva srednje vrijeme odgovora je oko dvostruko veće od vrijednosti za jedan poziv (indeks 2,02), a odgovori ostaju u ocjeni Standard. Sa ranim startom jedinica drži Standard do oko 117% nazivnog kapaciteta.
| Opterećenje, % nazivnog kapaciteta | Indeks odgovora | Sa ranim startom | 95. percentil / medijana | Udio propusnosti |
|---|---|---|---|---|
| 1 poziv | 1,00 | 0,88 | 1,73 | 0,01 |
| 24 | 1,07 | — | 1,61 | 0,38 |
| 36 | 1,15 | — | 1,61 | 0,55 |
| 50 | 1,30 | 1,14 | 1,69 | 0,74 |
| 64 | 1,48 | — | 1,72 | 0,94 |
| 80 | 1,75 | — | 1,70 | 1,00 |
| 96 | 1,97 | 1,71 | 1,62 | 0,98 |
| 112 | 2,20 | — | 1,69 | 0,94 |
| 128 | 2,52 | 2,21 | 1,68 | 0,99 |
| 152 | 3,02 | — | 1,60 | 0,91 |
| 176 | 3,34 | — | 1,71 | 0,81 |
Vrijeme odgovora raste sporije od opterećenja
Krivu sažimamo jednim brojem, elastičnošću opterećenja: za koliko procenata raste vrijeme odgovora na svaki procenat dodatnog opterećenja.
| Raspon opterećenja, % nazivnog kapaciteta | Elastičnost | Vrijeme odgovora po +10% opterećenja |
|---|---|---|
| 24–64 | 0,33 | oko 3% |
| 64–128 | 0,77 | oko 8% |
| 128–176 | 0,88 | oko 9% |
Elastičnost ostaje ispod 1 sve do 176%, a kriva nema prelomne tačke u kojoj bi skrenula nagore. Klijent koji radi 20% preko nazivnog kapaciteta dobija mjerljivo duže pauze na sistemu koji i dalje radi.
Rep ostaje u razmjeri
Medijana odgovora i odgovor u 95. percentilu zadržavaju isti odnos na svakom koraku, od jednog poziva do 176%:
Odgovor u 95. percentilu je oko 1,6 do 1,7 puta veći od medijane na svakom koraku opterećenja.
Spori odgovori rastu zajedno s ostalima, pa klijent koji zna uobičajenu pauzu može procijeniti i najgoru.
Propusnost se drži
Broj odgovora u sekundi raste s opterećenjem, vrhunac dostiže na oko 80% nazivnog kapaciteta i ostaje u okviru 6% tog vrhunca od 64% do 128% tog kapaciteta. Na 176% jedinica i dalje postiže oko 80% svoje vršne propusnosti.
Pozivi i medij
- Odgovorene replike. Više od 99% replika pozivalaca dobilo je odgovor na svakom koraku.
- Medij. Mjerna linija nije izgubila nijedan RTP paket ni na jednom koraku.
- Prihvat poziva. Na 176% nazivnog kapaciteta istovremeno je bilo uspostavljeno 352 SIP poziva. Svi su se povezali i nijedan nije pao.
- Modeli. Red jezičkog modela i red sinteze govora ostali su prazni na svakom koraku.
Prvi i drugi krug
Pokrenuli smo test, optimizovali sistem za visoko opterećenje i ponovo ga pokrenuli. Optimizacija je obuhvatila putanju medija, način na koji se detekcija glasa raspoređuje među pozivima, obradu tišine u sintetizovanom govoru i trenutak pokretanja jezičkog modela.
| Mjera | Prvi krug | Drugi krug |
|---|---|---|
| Kapacitet u ocjeni Standard | oko pola nazivnog kapaciteta | nazivni kapacitet |
| Kapacitet u ocjeni Gold | oko 36% nazivnog kapaciteta | oko 65% nazivnog kapaciteta |
| Vrijeme odgovora, jedan poziv | osnovna vrijednost | 22% manje |
| Vrijeme odgovora na pola nazivnog kapaciteta | osnovna vrijednost | 34% manje |
| Vršna propusnost | osnovna vrijednost | gotovo dvostruko |
Drugi krug je dostigao nazivnih 100 poziva, pa je broj u tehničkom listu izmjeren. Stranica Tehnologije pokazuje gdje se test opterećenja nalazi u sistemu. U tekstu Voicecore (na engleskom) opisujemo sljedeći korak u obradi zvuka: jezgro napisano u Rustu.
Postavka testa
Mjereno preko G.711 na probnoj telefonskoj liniji, sa dvadeset simuliranih pozivalaca i agentom za regrutaciju; 94% prvih fraza došlo je iz glasovnog keša.