Ħarsa ġenerali lejn l-emulaturi tat-terminal

Ftit kelmiet mill-uffiċċju tat-traduzzjoni tagħna: normalment kulħadd jistinka biex jittraduċi l-aħħar materjali u pubblikazzjonijiet, u aħna mhux eċċezzjoni. Iżda t-terminals mhumiex xi ħaġa li tiġi aġġornata darba fil-ġimgħa. Għalhekk, ttraduċijna għalik artiklu minn Antoine Beaupré, ippubblikat fir-rebbiegħa tal-2018: minkejja l-"età" konsiderevoli tiegħu skont standards moderni, fl-opinjoni tagħna, il-materjal ma tilef xejn ir-rilevanza tiegħu. Barra minn hekk, din oriġinarjament kienet serje ta 'żewġ artikli, iżda ddeċidejna li ngħaqqduhom f'kariga waħda kbira.

Ħarsa ġenerali lejn l-emulaturi tat-terminal

It-terminals għandhom post speċjali fl-istorja tal-kompjuter, iżda f'dawn l-aħħar deċennji ġew sfurzati jgħix flimkien mal-linja tal-kmand hekk kif l-interfaces grafiċi jsiru kullimkien. Emulaturi terminali ħadu posthom aħwa hardware, li, min-naħa tagħhom, kienu modifika ta 'sistemi bbażati fuq karti mtaqqba u toggle switches. Distribuzzjonijiet moderni jiġu ma 'varjetà ta' emulaturi terminali ta 'kull forma u kuluri. U filwaqt li ħafna huma kuntenti bit-terminal standard ipprovdut mill-ambjent tax-xogħol tagħhom, xi wħud kburin jużaw softwer detta eżotiku biex imexxu l-qoxra favorita tagħhom jew l-editur tat-test. Iżda, kif se naraw minn dan l-artikolu, mhux it-terminals kollha nħolqu fl-istess immaġni: huma differenti ħafna fil-funzjonalità, id-daqs u l-prestazzjoni.

Xi terminali għandhom toqob ta 'sigurtà detta sorprendenti, kif ukoll il-biċċa l-kbira għandhom sett ta' funzjonijiet kompletament differenti, minn appoġġ għal interface ta 'tabbed għal scripting. Għalkemm aħna ħares lejn emulaturi terminali fil-passat imbiegħed, dan l-artikolu huwa aġġornament tal-materjal preċedenti li se jgħin lill-qarrejja jiddeterminaw liema terminal għandhom jużaw fl-2018. L-ewwel nofs tal-artikolu jqabbel il-karatteristiċi, u t-tieni nofs jevalwa l-prestazzjoni.

Hawn huma t-terminals li rrevedjajt:

Ħarsa ġenerali lejn l-emulaturi tat-terminal

Dawn jistgħu ma jkunux l-aħħar verżjonijiet, peress li kont limitat għal bini stabbli fil-ħin tal-kitba, li stajt nagħmel fuq Debian 9 jew Fedora 27. L-unika eċċezzjoni hija Alacritty. Huwa dixxendent ta 'terminals aċċelerati bil-GPU u huwa miktub f'lingwa mhux tas-soltu u ġdida għal dan il-kompitu - Rust. Esklujejt terminali tal-web mir-reviżjoni tiegħi (inklużi dawk fuq elettroni), minħabba li testijiet preliminari wrew il-prestazzjoni estremament fqira tagħhom.

Appoġġ Unicode

Bdejt it-testijiet tiegħi bl-appoġġ Unicode. L-ewwel test tat-terminals kien li juri s-sekwenza Unicode minn Artikli tal-Wikipedija: “é, Δ, И, ק, م, ๗, あ, 叶, 葉 u 말.” Dan it-test sempliċi juri jekk it-terminal jistax jaħdem b'mod korrett mad-dinja kollha. xterm terminal ma jurix karattru Għarbi L-istess fil-konfigurazzjoni default:

Ħarsa ġenerali lejn l-emulaturi tat-terminal

B'mod awtomatiku, xterm juża t-tipa klassika "fissa", li, skond xorta l-istess Vicki, għandha "kopertura Unicode sostanzjali mill-1997". Hemm xi ħaġa għaddejja f'din it-tipa li tikkawża li l-karattru jidher bħala qafas vojt u huwa biss meta t-tipa tat-test tiżdied għal 20+ punt li l-karattru finalment jibda juri b'mod korrett. Madankollu, din il-“fissa” tkisser il-wiri ta’ karattri Unicode oħra:

Ħarsa ġenerali lejn l-emulaturi tat-terminal

Dawn il-screenshots ittieħdu f'Fedora 27, peress li ta riżultati aħjar minn Debian 9, fejn xi verżjonijiet anzjani tat-terminals (speċifikament mlterm) ma setgħux jimmaniġġjaw fonts kif suppost. Fortunatament dan ġie ffissat f'verżjonijiet aktar tard.

Issa innota kif il-linja hija murija f'xterm. Jirriżulta li s-simbolu Mem u s-Semitiku li ġej qoph irreferi għal skripts tal-istil RTL (mil-lemin għax-xellug), għalhekk teknikament għandhom jintwerew mil-lemin għax-xellug. Web browsers bħal Firefox 57 jimmaniġġjaw il-linja ta 'hawn fuq b'mod korrett. Verżjoni aktar sempliċi tat-test RTL hija l-kelma "Сара" bl-Ebrajk (Sarah). Paġna tal-Wiki dwar testi bidirezzjonali jgħid dan li ġej:

“Ħafna programmi tal-kompjuter ma jistgħux juru test bidirezzjonali b’mod korrett. Pereżempju, l-isem Ebrajk "Sarah" jikkonsisti mill-karattri sin (ש) (li jidher fuq il-lemin), imbagħad resh (ר) u finalment hu (ה) (li għandu jidher fuq ix-xellug)."

Ħafna terminali jeħlu minn dan it-test: Alacritty, terminali Gnome u XFCE derivati ​​minn VTE, urxvt, st u xterm juru "Sara" f'ordni inversa, bħallikieku konna ktibna l-isem bħala "Aras".

Ħarsa ġenerali lejn l-emulaturi tat-terminal

Problema oħra bit-testi bidirezzjonali hija li jeħtieġ li jiġu allinjati b'xi mod, speċjalment meta niġu biex jitħalltu testi RTL u LTR. L-iskripts RTL għandhom jimxu min-naħa tal-lemin tat-tieqa tat-terminal, imma x'għandu jiġri għat-terminals li default għal LTR Ingliż? Ħafna minnhom m'għandhom l-ebda mekkaniżmu speċjali u jallinjaw it-test kollu lejn ix-xellug (inkluż f'Konsole). L-eċċezzjonijiet huma pterm u mlterm, li jaderixxu mal-istandards u jallinjaw il-lemin tali linji.

Ħarsa ġenerali lejn l-emulaturi tat-terminal

Protezzjoni għall-inserzjoni

Il-karatteristika kritika li jmiss li identifikajt hija l-protezzjoni kontra l-inserzjoni. Għalkemm huwa magħruf ħafna li jispeċifika bħal:

$ curl http://example.com/ | sh

huma kmandi push ta 'eżekuzzjoni tal-kodiċi, ftit nies jafu li kmandi moħbija jistgħu Sneak fil-console meta tikkopja u tippejstja minn web browser, anke wara spezzjoni bir-reqqa. Sit ta' verifika Gianna Horna juri b'mod brillanti kemm il-kmand huwa innokwa:

git clone git: //git.kernel.org/pub/scm/utils/kup/kup.git

jinbidel f'inkonvenjent bħal dan meta jitwaħħal mill-websajt ta' Horn fit-terminal:

git clone /dev/null;
    clear;
	echo -n "Hello ";
	whoami|tr -d 'n';
	echo -e '!nThat was a bad idea. Don'"'"'t copy code from websites you don'"'"'t trust! 
	Here'"'"'s the first line of your /etc/passwd: ';
	head -n1 /etc/passwd
	git clone git://git.kernel.org/pub/scm/utils/kup/kup.git

Kif taħdem? Kodiċi malizzjuż huwa inkluż fil-blokk , li titmexxa 'l barra mill-fehma tal-utent bl-użu ta' CSS.

Modalità ta' pejst imqabbad hija mfassla b'mod ċar biex tinnewtralizza attakki bħal dawn. F'dan il-mod, it-terminals jagħlqu t-test pasted f'par ta 'sekwenzi ta' ħarba speċjali biex jgħidu lill-qoxra dwar l-oriġini tat-test. Dan jgħid lill-qoxra li tista 'tinjora karattri speċjali li jista' jkun fih it-test pasted. It-terminali kollha lura lill-xterm venerabbli jappoġġaw din il-karatteristika, iżda l-pejst fil-modalità Bracketed jeħtieġ appoġġ mill-qoxra jew l-applikazzjoni li taħdem fuq it-terminal. Per eżempju, softwer bl-użu GNU Readline (l-istess Bash), jeħtieġ fajl ~/.inputrc:

set enable-bracketed-paste on

Sfortunatament, is-sit tat-test ta 'Horn juri wkoll kif tevita din il-protezzjoni permezz tal-ifformattjar tat-test innifsu u qabel iż-żmien tispiċċa tapplika l-modalità Bracketed għaliha. Dan jaħdem minħabba li xi terminali ma jiffiltrawx b'mod korrett is-sekwenzi tal-ħarba qabel ma jżidu tagħhom stess. Per eżempju, f'mini qatt ma kont kapaċi nlesti b'suċċess it-testijiet tal-Konsole anki bil-konfigurazzjoni korretta .inputrc fajl. Dan ifisser li tista 'faċilment tikseb il-konfigurazzjoni tas-sistema tiegħek korrotta minħabba applikazzjoni mhux appoġġjata jew qoxra kkonfigurata ħażin. Dan huwa speċjalment perikoluż meta tidħol f'servers remoti, fejn xogħol ta' konfigurazzjoni bir-reqqa huwa inqas komuni, speċjalment jekk għandek ħafna magni remoti bħal dawn.

Soluzzjoni tajba għal din il-problema hija l-plugin ta 'konferma tal-pejst għat-terminal urxvt, li sempliċiment jitlob permess biex jiddaħħal kwalunkwe test li jkun fih linji ġodda. Ma sibtx għażla aktar sigura għall-attakk tat-test deskritt minn Horn.

Tabs u profili

Karatteristika popolari bħalissa hija l-appoġġ għal interface ta 'tabbed, li aħna ser niddefinixxu bħala tieqa terminali waħda li fiha diversi terminali oħra. Din il-funzjoni tvarja għal terminals differenti, u għalkemm it-terminals tradizzjonali xterm ma jappoġġjawx tabs xejn, inkarnazzjonijiet terminali aktar moderni bħal Xfce Terminal, GNOME Terminal u Konsole għandhom din il-funzjoni. Urxvt jappoġġja wkoll tabs, iżda biss jekk tuża plugin. Iżda f'termini ta 'appoġġ tat-tab innifsu, Terminator huwa l-mexxej mhux ikkontestat: mhux biss jappoġġja t-tabs, iżda jista' wkoll jirranġa terminali fi kwalunkwe ordni (ara l-immaġni hawn taħt).

Ħarsa ġenerali lejn l-emulaturi tat-terminal

Karatteristika oħra ta 'Terminator hija l-abbiltà li "jiġbor" dawn it-tabs flimkien u tibgħat l-istess keystrokes lil terminali multipli fl-istess ħin, li tipprovdi għodda mhux raffinata biex twettaq operazzjonijiet bl-ingrossa fuq servers multipli simultanjament. Karatteristika simili hija implimentata wkoll f'Konsole. Biex tuża din il-karatteristika f'terminals oħra, trid tuża softwer ta 'parti terza bħal Cluster SSH, xlax jew tmux.

It-tabs jaħdmu tajjeb speċjalment meta jkunu mqabbda ma' profili: pereżempju, jista' jkollok tab waħda għall-email, oħra għaċ-chat, eċċ. Dan huwa appoġġjat tajjeb minn Konsole Terminal u GNOME Terminal. It-tnejn jippermettu li kull tab tniedi awtomatikament il-profil tagħha stess. Terminator jappoġġja wkoll il-profili, iżda ma stajtx insib mod biex tniedi awtomatikament ċerti programmi meta tiftaħ tab speċifika. Terminali oħra m'għandhom il-kunċett ta' "profil" xejn.

Ruffles

L-aħħar ħaġa li ser tkopri fl-ewwel parti ta 'dan l-artikolu hija d-dehra tat-terminals. Pereżempju GNOME, Xfce u urxvt jappoġġjaw it-trasparenza, iżda dan l-aħħar waqgħu l-appoġġ għall-immaġini fl-isfond, u ġiegħel lil xi utenti jaqilbu għat-terminal Tilix. Personalment, jien kuntent biha u huwa sempliċi Xriżorsi, li jistabbilixxi s-sett bażi ta' kuluri fl-isfond għal urxvt. Madankollu, temi tal-kulur mhux standard jistgħu wkoll joħolqu problemi. Pereżempju, Solarizzata ma jaħdimx bl-applikazzjonijiet htop и IPTraf, peress li diġà jużaw il-kuluri tagħhom stess.

Terminal VT100 oriġinali ma appoġġawx kuluri, u oħrajn ġodda ta 'spiss kienu limitati għal paletta ta' 256 kulur. Għal utenti avvanzati li jfasslu t-terminals tagħhom, shell prompts jew status bars b'modi kumplessi jistgħu jkunu limitazzjoni tedjanti. Kontenut binarji liema terminals għandhom appoġġ "Kulur Veru". It-testijiet tiegħi jikkonfermaw li t-terminali bbażati fuq st, Alacritty u VTE jappoġġjaw il-Kulur Veru perfettament. Terminali oħra ma tantx imorru tajjeb f’dan ir-rigward u, fil-fatt, lanqas juru 256 kulur. Hawn taħt tista 'tara d-differenza bejn l-appoġġ tal-Kulur Veru fit-terminals GNOME, st u xterm, li jagħmlu xogħol tajjeb ta' dan bil-paletta tal-kulur 256 tagħhom, u urxvt, li mhux biss ma jgħaddix mit-test, iżda saħansitra juri xi karattri li jteptep minflokhom.

Ħarsa ġenerali lejn l-emulaturi tat-terminal

Xi terminali janalizzaw ukoll it-test għall-mudelli tal-URL biex jagħmlu links klikkabbli. Dan japplika għat-terminals kollha derivati ​​minn VTE, filwaqt li urxvt jeħtieġ plugin speċjali li jittrasforma l-URLs fuq klikk jew billi juża shortcut tat-tastiera. Terminali oħra I ttestjajt URLs tal-wiri b'modi oħra.

Fl-aħħarnett, xejra ġdida fit-terminals hija l-għażla tal-iscroll buffer. Per eżempju, st m'għandu l-ebda buffer ta 'scroll; huwa preżunt li l-utent se juża multiplexer terminali bħal tmux u Skrin GNU.

Alacritty wkoll m'għandhiex backscroll buffers, iżda se jiżdiedu dalwaqt l-appoġġ tagħha minħabba "feedback estensiv" dwar dan is-suġġett mill-utenti. Apparti dawn l-upstarts, kull terminal li stajt ittestja li stajt insib jappoġġja reverse scrolling.

Subtotali

Fit-tieni parti tal-materjal (fl-oriġinal dawn kienu żewġ artikoli differenti - madwar. korsija) se nqabblu l-prestazzjoni, l-użu tal-memorja u l-latenza. Iżda diġà nistgħu naraw li wħud mit-terminals inkwistjoni għandhom nuqqasijiet serji. Pereżempju, utenti li jaħdmu b'mod regolari bi skripts RTL jistgħu jkunu jridu jikkunsidraw mlterm u pterm, peress li huma aħjar biex jimmaniġġjaw kompiti simili minn oħrajn. Konsole wkoll wettaq tajjeb. Utenti li ma jaħdmux bi skripts RTL jistgħu jagħżlu xi ħaġa oħra.

F'termini ta 'protezzjoni kontra l-inserzjoni ta' kodiċi malizzjuż, urxvt jispikka minħabba l-implimentazzjoni speċjali tiegħu ta 'protezzjoni kontra dan it-tip ta' attakk, li jidher definittivament konvenjenti għalija. Għal dawk li qed ifittxu xi qniepen u sfafar, Konsole ta’ min iħares. Fl-aħħarnett, ta 'min jinnota li VTE hija bażi eċċellenti għat-terminals, li tiggarantixxi appoġġ tal-kulur, rikonoxximent tal-URL, eċċ. L-ewwel daqqa t'għajn, it-terminal default li jiġi mal-ambjent favorit tiegħek jista 'jissodisfa r-rekwiżiti kollha, iżda ejja nħallu din il-mistoqsija miftuħa sakemm nifhmu l-prestazzjoni.

Ejja nkomplu l-konversazzjoni


B'mod ġenerali, il-prestazzjoni tat-terminals fiha nnifisha tista 'tidher problema mbiegħda, iżda kif jirriżulta, xi wħud minnhom juru latenza sorprendentement għolja għal softwer ta' tip fundamentali bħal dan. Barra minn hekk se nħarsu lejn dik li tradizzjonalment tissejjaħ "veloċità" (fil-fatt, din hija l-veloċità tal-iskrolljar) u l-konsum tal-memorja tat-terminal (bil-twiddib li dan mhuwiex kritiku llum daqs kemm kien għexieren ta 'snin ilu).

Dewmien

Wara studju bir-reqqa tal-prestazzjoni tat-terminal, wasalt għall-konklużjoni li l-aktar parametru importanti f'dan ir-rigward huwa l-latency (ping). Fl-artiklu tiegħu "Aħna nipprintjaw bi pjaċir" Pavel Fatin ħares lejn il-latency ta 'diversi edituri tat-test u ta x'jifhem li t-terminals f'dan ir-rigward jistgħu jkunu aktar bil-mod mill-edituri tat-test l-aktar mgħaġġla. Kien dan il-ħjiel li fl-aħħar mill-aħħar wassalni biex nagħmel it-testijiet tiegħi stess u nikteb dan l-artikolu.

Imma x'inhu latency, u għaliex hija daqshekk importanti? Fl-artiklu tiegħu, Fatin iddefinixxa bħala "id-dewmien bejn l-ippressar ta' ċavetta u l-aġġornament tal-iskrin korrispondenti" u kkwota "Gwida għall-Interazzjoni bejn il-Bniedem u l-Kompjuter", li jgħid: “Id-dewmien fil-feedback viżwali fuq display tal-kompjuter għandu impatt importanti fuq l-imġieba u s-sodisfazzjon tat-tajpista.”

Fatin jispjega li dan il-ping għandu konsegwenzi aktar profondi minn sempliċi sodisfazzjon: "it-tajpjar isir aktar bil-mod, iseħħu aktar żbalji, u t-tensjoni tal-għajnejn u tal-muskoli tiżdied." Fi kliem ieħor, dewmien kbir jista 'jwassal għal typos u wkoll kwalità tal-kodiċi aktar baxxa, peress li jwassal għal tagħbija konjittiva addizzjonali fuq il-moħħ. Imma l-agħar huwa li l-ping "iżżid it-tensjoni tal-għajnejn u tal-muskoli," li jidher li jimplika żvilupp ta' korrimenti fuq ix-xogħol fil-futur (Apparentement, l-awtur ifisser problemi bil-muskoli ta 'l-għajnejn, dahar, armi u, ovvjament, viżjoni - madwar. korsija) minħabba stress ripetittiv.

Xi wħud minn dawn l-effetti ilhom magħrufa għal żmien twil, u r-riżultati riċerka, ippubblikat lura fl-1976 fil-ġurnal Ergonomics, qal li dewmien ta '100 millisekondi "jfixkel b'mod sinifikanti l-veloċità tat-tajpjar." Aktar reċentement, ġiet introdotta l-Gwida għall-Utent GNOME ħin ta 'rispons aċċettabbli f'10 millisekondi, u jekk tmur lil hinn, allura Microsoft Riċerka juri li 1 millisekonda hija ideali.

Fatin wettaq it-testijiet tiegħu fuq edituri tat-testi; ħoloq strument portabbli imsejjaħ Typometerli użajt biex nittestja ping f'emulaturi tat-terminal. Żomm f'moħħok li t-test sar f'modalità ta 'simulazzjoni: fir-realtà, jeħtieġ li nqisu kemm il-latenza tad-dħul (tastiera, kontrollur USB, eċċ.) kif ukoll tal-ħruġ (buffer tal-kard tal-vidjo, monitor). Skont Fatin, f'konfigurazzjonijiet tipiċi huwa ta 'madwar 20 ms. Jekk għandek tagħmir tal-logħob, tista 'tikseb din iċ-ċifra fi 3 millisekondi biss. Peress li diġà għandna hardware veloċi bħal dan, l-applikazzjoni m'għandhiex għalfejn iżżid il-latency tagħha stess. L-għan ta 'Fatin huwa li ġġib il-latency tal-applikazzjoni għal millisekonda 1, jew saħansitra tikseb tisselezzjona mingħajr dewmien li jista' jitkejjel, kif ġewwa IntelliJ IDEA 15.

Hawn huma r-riżultati tal-kejl tiegħi, kif ukoll xi wħud mir-riżultati ta 'Fatin, biex juru li l-esperiment tiegħi jaqbel mat-testijiet tiegħu:

Ħarsa ġenerali lejn l-emulaturi tat-terminal

L-ewwel ħaġa li laqtitni kien il-ħin aħjar ta 'rispons ta' programmi anzjani bħal xterm u mlterm. Bl-agħar latency tar-reġistru (2,4 ms), marru aħjar mill-iktar terminal modern veloċi (10,6 ms għal st). L-ebda terminal modern ma jaqa 'taħt il-limitu ta' 10 millisekonda. B'mod partikolari, Alacritty tonqos milli tissodisfa t-talba ta '"emulatur tat-terminal l-aktar mgħaġġel disponibbli", għalkemm il-punteġġi tiegħu tjiebu mill-ewwel reviżjoni tiegħu fl-2017. Tabilħaqq, l-awturi tal-proġett konxju tas-sitwazzjoni u qed jaħdmu biex itejbu l-wiri. Għandu jiġi nnutat ukoll li Vim li juża GTK3 huwa ordni ta 'kobor aktar bil-mod mill-kontroparti tiegħu GTK2. Minn dan nistgħu nikkonkludu li GTK3 joħloq latency addizzjonali, u dan huwa rifless fit-terminals l-oħra kollha li jużawha (Terminator, Xfce4 Terminal u GNOME Terminal).

Madankollu, id-differenzi jistgħu ma jkunux notevoli għall-għajn. Kif jispjega Fatin, “m’għandekx għalfejn tkun konxju tad-dewmien biex dan ikollu effett fuqek.” Fatin iwissi wkoll dwar devjazzjoni standard: "kwalunkwe tfixkil fil-latency (jitter) joħloq stress addizzjonali minħabba l-imprevedibbiltà tagħhom."

Ħarsa ġenerali lejn l-emulaturi tat-terminal

Il-grafika t'hawn fuq hija meħuda fuq Debian 9 pur (stretch) bi maniġer tat-tieqa i3. Dan l-ambjent jipproduċi l-aħjar riżultati fit-testijiet tal-latency. Kif jirriżulta, GNOME joħloq ping addizzjonali ta '20 ms għall-kejl kollu. Spjegazzjoni possibbli għal dan hija l-preżenza ta 'programmi bi proċessar sinkroniku ta' avvenimenti ta 'input. Fatin jagħti eżempju għal każ bħal dan workrave, li żżid dewmien billi tipproċessa l-avvenimenti kollha tal-input b'mod sinkroniku. B'mod awtomatiku, GNOME jiġi wkoll b'maniġer tat-twieqi Mutter, li joħloq saff addizzjonali ta 'buffering, li jaffettwa l-ping u jżid mill-inqas 8 millisekondi ta' latency.

Ħarsa ġenerali lejn l-emulaturi tat-terminal

Scroll veloċità

It-test li jmiss huwa test tradizzjonali ta '"veloċità" jew "bandwidth", li jkejjel kemm it-terminal jista' jiskrollja paġna waqt li juri ammonti kbar ta 'test fuq l-iskrin. Il-mekkanika tat-test ivarja; it-test oriġinali kien li sempliċement jiġġenera l-istess sekwenza tat-test bl-użu tal-kmand seq. Testijiet oħra jinkludu t-test ta 'Thomas E. Dickey (mantenitur xterm), li ripetutament il-fajl terminfo.src jitniżżel. F'reviżjoni oħra tal-prestazzjoni tat-terminal Den Luu juża string kodifikata base32 ta 'bytes każwali, li joħroġ lit-terminal bl-użu ta' cat. Luu jikkunsidra tali test bħala "parametru referenzjarju inutli daqs kemm wieħed jista 'jimmaġina" u jissuġġerixxi li tuża r-rispons terminali bħala metrika primarja minflok. Dickey jsejjaħ ukoll it-test tiegħu qarrieqi. Madankollu, iż-żewġ awturi jirrikonoxxu li l-bandwidth tat-tieqa tat-terminal jista 'jkun kwistjoni. Luu skopra l-iffriżar tal-Emacs Eshell meta juri fajls kbar, u Dickey ottimizza t-terminal biex jeħles min-nuqqas viżwali ta 'xtrerm. Għalhekk għad hemm xi mertu għal dan it-test, iżda peress li l-proċess ta 'l-għoti huwa differenti ħafna minn terminal għal terminal, jista' jintuża wkoll bħala komponent tat-test biex jittestja parametri oħra.

Ħarsa ġenerali lejn l-emulaturi tat-terminal

Hawnhekk naraw ir-rxvt u st pull qabel il-kompetizzjoni, segwiti mill-Alacritty ħafna aktar ġodda, li hija mfassla b'fokus fuq il-prestazzjoni. Sussegwentement hemm Xfce (familja VTE) u Konsole, li huma kważi d-doppju veloċi. L-aħħar huwa xterm, li huwa ħames darbiet aktar bil-mod minn rxvt. Matul it-test, xterm wkoll rippled ħafna, u għamel it-test li jgħaddi diffiċli biex tara anki jekk kienet l-istess linja. Konsole kien mgħaġġel, iżda xi drabi kien diffiċli: il-wiri kien jiffriża minn żmien għal żmien, juri test parzjali jew ma jurih xejn. Terminali oħra murija kordi b'mod ċar, inklużi st, Alacritty, u rxvt.

Dickey jispjega li d-differenzi fil-prestazzjoni huma dovuti għad-disinn ta 'scroll buffers f'terminals differenti. B'mod partikolari, huwa jakkuża lil rxvt u terminali oħra li "mhux isegwu r-regoli ġenerali":

“B'differenza minn xterm, rxvt ma ppruvawx juru l-aġġornamenti kollha. Jekk taqa 'lura, se tirrifjuta xi aġġornamenti biex tlaħħaq. Dan kellu impatt akbar fuq il-veloċità apparenti ta 'scrolling milli fuq l-organizzazzjoni tal-memorja interna. Żvantaġġ wieħed kien li l-animazzjoni ASCII kienet kemmxejn impreċiża."

Biex tiffissa din in-nuqqas ta 'xterm perċepit, Dickey jissuġġerixxi li tuża r-riżors fastScroll, li jippermetti lil xterm jarmi xi aġġornamenti tal-iskrin biex ilaħħqu mal-fluss. It-testijiet tiegħi jikkonfermaw li fastScroll itejjeb il-prestazzjoni u jġib xterm fuq l-istess livell ma 'rxvt. Din hija, madankollu, crutch pjuttost mhux maħduma, kif jispjega Dickey stess: "xi drabi xterm - bħal konsole - jidher li jieqaf hekk kif jistenna sett ġdid ta 'aġġornamenti tal-iskrin wara li xi wħud ikunu tneħħew." F'dan ir-rigward, jidher li terminali oħra sabu l-aħjar kompromess bejn il-veloċità u l-integrità tal-wiri.

Konsum tar-riżorsi

Irrispettivament minn jekk jagħmilx sens li nikkunsidraw il-veloċità tal-iskrolljar bħala metrika tal-prestazzjoni, dan it-test jippermettilna nissimulaw it-tagħbija fuq it-terminals, li mbagħad jippermettilna nkejlu parametri oħra bħall-memorja jew l-użu tad-disk. Il-metriċi nkisbu billi tmexxi t-test speċifikat seq taħt il-monitoraġġ tal-proċess Python. Huwa ġabar data tal-meter getrusage() għall- ru_maxrss, ammont ru_oublock и ru_inblock u tajmer sempliċi.

Ħarsa ġenerali lejn l-emulaturi tat-terminal

F'dan it-test, l-ST jieħu l-ewwel post bl-inqas konsum medju ta 'memorja ta' 8 MB, li mhux sorprendenti meta wieħed iqis li l-idea ewlenija tad-disinn hija s-sempliċità. mlterm, xterm u rxvt jikkunsmaw ftit aktar - madwar 12 MB. Riżultat notevoli ieħor huwa Alacritty, li jeħtieġ 30 MB biex jaħdem. Imbagħad hemm terminali tal-familja VTE b'ċifri minn 40 sa 60 MB, li huwa pjuttost ħafna. Dan il-konsum jista 'jiġi spjegat mill-fatt li dawn it-terminals jużaw libreriji ta' livell ogħla, pereżempju, GTK. Konsole jiġi fl-aħħar b'konsum enormi ta' 65MB ta' memorja waqt it-testijiet, għalkemm dan jista' jiġi ġġustifikat mill-firxa wiesgħa ħafna ta' karatteristiċi tiegħu.

Meta mqabbla mar-riżultati preċedenti miksuba għaxar snin ilu, il-programmi kollha bdew jikkunsmaw notevolment aktar memorja. Xterm kien jeħtieġ 4 MB, iżda issa jeħtieġ 15 MB eżatt mal-istartjar. Hemm żieda simili fil-konsum għal rxvt, li issa jeħtieġ 16 MB barra mill-kaxxa. Xfce Terminal jieħu 34 MB, li huwa tliet darbiet akbar minn qabel, iżda GNOME Terminal jeħtieġ biss 20 MB. Naturalment, it-testijiet preċedenti kollha saru fuq arkitettura ta '32-bit. Fl-LCA 2012 Rusty Russell qallekli hemm ħafna aktar raġunijiet sottili li jistgħu jispjegaw iż-żieda fil-konsum tal-memorja. Waqt li ngħidu dan, issa ngħixu fi żmien fejn għandna gigabytes ta 'memorja, għalhekk aħna ser namministraw b'xi mod.

Madankollu, ma nistax ma nħossx li l-allokazzjoni ta' aktar memorja għal xi ħaġa fundamentali daqs it-terminal hija ħela ta' riżorsi. Dawn il-programmi għandhom ikunu l-iżgħar fost l-iżgħar, għandhom ikunu jistgħu jaħdmu fuq kwalunkwe "kaxxa", anke kaxxa taż-żraben, jekk qatt naslu sal-punt fejn jeħtieġ li jkunu mgħammra b'sistemi Linux (u taf li hekk ikun ). Iżda b'dawn in-numri, l-użu tal-memorja se jsir kwistjoni fil-futur fi kwalunkwe ambjent li jħaddem terminali multipli minbarra ftit mill-eħfef u l-aktar limitati fil-kapaċitajiet. Biex jikkumpensaw għal dan, GNOME Terminal, Konsole, urxvt, Terminator u Xfce Terminal għandhom modalità Daemon li tippermettilek tikkontrolla terminali multipli permezz ta 'proċess wieħed, li jillimita l-konsum tal-memorja tagħhom.

Ħarsa ġenerali lejn l-emulaturi tat-terminal

Matul it-testijiet tiegħi, wasalt għal riżultat ieħor mhux mistenni rigward disk read-write: Jien stennejt li ma nara xejn hawn, iżda rriżulta li xi terminali jiktbu l-aktar data voluminuża fuq disk. Għalhekk, il-librerija VTE fil-fatt iżżomm scroll buffer fuq disk (din il-karatteristika kien innutat lura fl-2010, u dan għadu jiġri). Iżda b'differenza mill-implimentazzjonijiet eqdem, issa għall-inqas din id-dejta hija kkodifikata bl-użu AES256 GCM (mill-verżjoni 0.39.2). Iżda tqum mistoqsija raġonevoli: x'inhu tant speċjali dwar il-librerija VTE li teħtieġ tali approċċ mhux standard għall-implimentazzjoni...

Konklużjoni

Fl-ewwel parti tal-artikolu, sibna li terminali bbażati fuq VTE għandhom sett tajjeb ta 'karatteristiċi, iżda issa naraw li dan jiġi ma' xi spejjeż ta 'prestazzjoni. Issa l-memorja mhix kwistjoni minħabba li t-terminals VTE kollha jistgħu jiġu kkontrollati permezz ta 'proċess Daemon, li jillimita l-aptit tagħhom. Madankollu, sistemi eqdem li għandhom limitazzjonijiet fiżiċi fuq l-ammont ta 'RAM u buffers tal-kernel xorta jistgħu jeħtieġu verżjonijiet preċedenti tat-terminals, peress li jikkunsmaw ferm inqas riżorsi. Għalkemm it-terminals VTE marru tajjeb fit-testijiet tal-fluss (iskrolljar), il-latenza tal-wiri tagħhom hija 'l fuq mil-limitu stabbilit fil-Gwida għall-Utent ta' GNOME. L-iżviluppaturi tal-VTE probabbilment għandhom iqisu dan. Jekk inqisu li anke għal utenti novizzi tal-Linux li jiltaqgħu ma' terminal huwa inevitabbli, jistgħu jagħmluha aktar faċli għall-utent. Għal geeks b'esperjenza, il-bidla mit-terminal default tista 'saħansitra tfisser inqas tensjoni tal-għajnejn u l-abbiltà li tevita korrimenti u mard futuri relatati max-xogħol minħabba sessjonijiet twal ta' xogħol. Sfortunatament, l-xterm u l-mlterm qodma biss iwassluna sal-limitu tal-ping maġiku ta '10 millisekondi, li huwa inaċċettabbli għal ħafna.

Il-kejl ta' referenza wera wkoll li minħabba l-iżvilupp ta' ambjenti grafiċi Linux, l-iżviluppaturi kellhom jagħmlu għadd ta' kompromessi. Xi utenti jistgħu jixtiequ jħarsu lejn il-maniġers tat-twieqi regolari peress li jipprovdu tnaqqis sinifikanti tal-ping. Sfortunatament, ma kienx possibbli li titkejjel il-latenza għal Wayland: il-programm Typometer li użajt inħoloq għal dak li Wayland huwa ddisinjat biex jipprevjeni: l-ispjunjar fuq twieqi oħra. Nittama li Wayland compositing jaħdem aħjar minn X.org, u nittama wkoll li fil-futur xi ħadd isib mod kif ikejjel il-latency f'dan l-ambjent.

Sors: www.habr.com

Żid kumment