Server Unit pokreće ceo glasovni stek za jednog klijenta: obradu poziva, prepoznavanje govora, jezički model i sintezu govora. Svaka jedinica nosi 100 istovremenih poziva. Pre nego što taj broj uđe u ugovor, treba ga testirati, pa smo napravili test opterećenja i izveli ga dvaput.
Želeli smo da znamo da li jedinica nosi svojih nazivnih 100 poziva s odgovorima koji i dalje zvuče kao razgovor i kako se ponaša iznad njih, na 120%, 150% i 176%.
Merenje je rađeno na jednom Server Unitu, s agentom za regrutovanje i simuliranim pozivaocima na istoj jedinici, preko G.711 A-law kroz merni most: 22 koraka opterećenja u 9 serija, 22.018 odgovora, oko 129 sati razgovora. Opterećenje je dato kao udeo nazivnog kapaciteta (100 istovremenih poziva), a vreme odgovora kao indeks, gde jedan poziv iznosi 1,00.
Ukratko: srednje vreme odgovora ostaje u ocenu Standard ili bolje do nazivnog kapaciteta, a uz rani start do oko 117%. Na 176% svi pozivi su se povezali i nijedan nije pao. Na svakom koraku više od 99% replika pozivaoca dobilo je odgovor, a jedan krug optimizacije za veliko opterećenje udvostručio je opterećenje koje jedinica nosi u ocenu Standard.
Kako smo merili
- Simulirani pozivaoci na istoj jedinici. Svaki razgovor su dva telefonska poziva: agent koji se testira i simulirani pozivalac. Dvadeset simuliranih pozivalaca, svaki sa sopstvenim glasom, manirom i raspoloženjem, pita za posao, pravi pauze i odgovara kao ljudi. Server Unit nosi oba kraja svakog razgovora, pa je telefonsko opterećenje dvostruko veće nego što bi ga stvorio pravi razgovor iste veličine.
- Realne zavisnosti. Spoljni sistemi koje agent poziva odgovaraju posle fiksnog, realnog kašnjenja.
- Jedan časovnik na liniji. Merni most stoji u audio putanji. Beleži trenutak kada se završi izgovorena fraza pozivaoca i trenutak kada stigne prvi zvuk agentovog odgovora. Vreme odgovora je taj interval. Obuhvata sve unutar jedinice, uključujući pauzu za kraj replike i prenos zvuka.
- Koraci. Opterećenje raste po koracima, od jednog razgovora do 176% nazivnog kapaciteta. Svaki korak se dva minuta stabilizuje, a zatim se meri najmanje pet. Korak s jednim razgovorom traje dvadeset.
- Korak mora da zasluži mesto. Korak se računa samo ako prođe osam provera: stabilno stanje (druga polovina nije sporija od prve), neuspele replike, ispravnost mernog mosta, preklapanje govora, poklapanje događaja mosta sa agentovim logom, izgubljena telemetrija, odbijeni pozivi i ograničavači resursa.
- Dva režima. Agenta smo merili u standardnom režimu i s ranim startom, u kojem jezički model počinje na prepoznatom tekstu pre nego što je replika formalno zatvorena.
Šta se desilo
Pojasevi opterećenja
Ocene opisuju kako odgovor deluje pozivaocu. Svaka ocena se završava na određenom indeksu vremena odgovora.
| Pojas opterećenja | Opterećenje, % nazivnog kapaciteta | Ocena odgovora | Indeks do | Šta pozivalac primećuje |
|---|---|---|---|---|
| Nisko | do 42 | Platinum | 1,22 | Odgovori stižu brzinom bliskom jednom pozivu |
| Umereno | 42–65 | Gold | 1,49 | Brz odgovor |
| Visoko | 65–100 | Standard | 2,03 | Prirodna pauza; ovaj pojas se završava na nazivnom kapacitetu |
| Vrhunac | 100–137 | Minimum | 2,71 | Primetna pauza, i dalje razgovor |
| Nalet | 137–176 | Stretch | — | Duža pauza, a svi pozivi su i dalje povezani |
Uz rani start svaki pojas se produžava: Platinum do oko 57% nazivnog kapaciteta, Gold do oko 78%, Standard do oko 117%. Rani start smo merili do 128% nazivnog kapaciteta.
Nazivni kapacitet je ispunjen
Na 100 istovremenih poziva srednje vreme odgovora je oko dvostruko veće od vrednosti za jedan poziv (indeks 2,02), a odgovori ostaju u oceni Standard. Uz rani start jedinica drži Standard do oko 117% nazivnog kapaciteta.
| Opterećenje, % nazivnog kapaciteta | Indeks odgovora | Uz rani start | 95. percentil / medijana | Udeo 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 |
Vreme odgovora raste sporije od opterećenja
Krivu sažimamo jednim brojem, elastičnošću opterećenja: za koliko procenata raste vreme odgovora na svaki procenat dodatnog opterećenja.
| Opseg opterećenja, % nazivnog kapaciteta | Elastičnost | Vreme odgovora na +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 prelomnu tačku na kojoj skreće naviše. Klijent koji radi 20% iznad nazivnog kapaciteta dobija merljivo dužu pauzu na sistemu koji i dalje radi.
Rep ostaje proporcionalan
Medijana odgovora i odgovor na 95. percentilu održavaju isti odnos na svakom koraku, od jednog poziva do 176%:
Odgovor na 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 da proceni i najgoru.
Propusnost se drži
Broj odgovora u sekundi raste s opterećenjem, dostiže vrhunac na oko 80% nazivnog kapaciteta i ostaje u okviru 6% tog vrhunca od 64% do 128% tog kapaciteta. Na 176% jedinica i dalje obrađuje oko 80% svoje vršne propusnosti.
Pozivi i medijski tok
- Odgovorene replike. Na svakom koraku više od 99% replika pozivaoca dobilo je odgovor.
- Medijski tok. Merna 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
Izveli smo test, optimizovali stek za veliko opterećenje i ponovo izveli test. Optimizacija je obuhvatila medijsku putanju, način na koji se detekcija glasa raspoređuje po pozivima, obradu tišine u sintetizovanom govoru i trenutak u kojem se pokreće jezički model.
| Mera | Prvi krug | Drugi krug |
|---|---|---|
| Kapacitet u oceni Standard | oko pola nazivnog kapaciteta | nazivni kapacitet |
| Kapacitet u oceni Gold | oko 36% nazivnog kapaciteta | oko 65% nazivnog kapaciteta |
| Vreme odgovora, jedan poziv | osnovna vrednost | 22% niže |
| Vreme odgovora na pola nazivnog kapaciteta | osnovna vrednost | 34% niže |
| Vršna propusnost | osnovna vrednost | skoro dvostruka |
Drugi krug je dostigao nazivnih 100 poziva, pa je broj u tehničkom listu izmeren. Stranica Tehnologije pokazuje gde test opterećenja stoji u steku. U tekstu Voicecore (na engleskom) opisujemo sledeći korak u obradi zvuka: jezgro napisano u Rustu.
Postavka testa
Mereno preko G.711 na probnoj telefonskoj liniji, s dvadeset simuliranih pozivalaca i agentom za regrutovanje; 94% prvih fraza dolazilo je iz glasovnog keša.