Ett par ord frÄn vÄrt översÀttningskontor: vanligtvis strÀvar alla efter att översÀtta de senaste materialen och publikationerna, och vi Àr inget undantag. Men terminaler Àr inte nÄgot som uppdateras varje vecka. DÀrför har vi översatt artikeln av Antoine Bopre, publicerad vÄren 2018: trots sin anseende 'Älder' enligt moderna standarder, anser vi att materialet definitivt inte har förlorat sin relevans. Dessutom Àr originalet en serie av tvÄ artiklar, men vi har beslutat att sammanfoga dem till ett stort inlÀgg.

Terminaler har en sÀrskild plats i datorhistorien, men under de senaste decennierna har de 'tvingats' bokstavligen överleva tillsammans med kommandoraden mot bakgrund av de grafiska grÀnssnittens allmÀna spridning. har ersatt sina , som i sin tur var en modifiering av system baserade pÄ hÄlkort och switchar. Moderna distributioner levereras med ett helt spektrum av terminalemulatorer i alla former och fÀrger. Medan mÄnga nöjer sig med den standardterminal som tillhandahÄlls av deras arbetsmiljö, anvÀnder vissa stolt uppenbart exotisk programvara för att köra sitt favoritgrÀnssnitt eller textredigerare. Men, som vi kommer att se i denna artikel, var inte alla terminaler skapade pÄ samma sÀtt: de varierar kraftigt i funktionalitet, storlek och prestanda.
Vissa terminaler har helt fantastiska sĂ€kerhetsluckor, och dessutom har de flesta en helt olika uppsĂ€ttning funktioner, frĂ„n stöd för flikgrĂ€nssnitt till skript. Ăven om vi , Ă€r denna artikel en uppdatering av det tidigare materialet som hjĂ€lper lĂ€sarna att avgöra vilken terminal de ska anvĂ€nda 2018. I första halvan av artikeln jĂ€mförs funktionerna, medan den andra halvan bedömer prestandan.
HÀr Àr de terminaler jag har diskuterat:

Det kan hÀnda att dessa inte Àr de mest aktuella versionerna, eftersom jag har begrÀnsat mig till stabila byggnader vid tidpunkten för skrivandet, som jag har kunnat installera pÄ Debian 9 eller Fedora 27. Det enda undantaget Àr Alacritty. Det Àr en avkomling till terminaler med GPU-accelerering och skriven i ett ovanligt och nytt sprÄk för denna uppgift - Rust. Jag exkluderade webbterminaler (inklusive, och pÄ ), eftersom preliminÀra tester visade pÄ deras extremt lÄga prestanda.
Unicode-stöd
Mina tester började med unicode-stöd. Det första testet av terminalerna var att visa en strĂ€ng om unicode frĂ„n : "Ă©, Î, Đ, ڧ, Ù , àč, ă, ć¶, è och ë§". Detta enkla test visar om terminalen kan fungera korrekt över hela vĂ€rlden. Terminalen xterm visar inte den arabiska symbolen i standardkonfigurationen:

Som standard anvÀnder xterm det klassiska "monospace"-teckensnittet, som enligt , har "betydande unicode-kompatibilitet sedan 1997". I detta teckensnitt sker det nÄgot som gör att symbolen visas som en tom ram och endast vid ökning av textstorleken till 20+ punkter börjar symbolen Àntligen visas korrekt. Men en sÄdan "fix" förstör visningen av andra unicode-symboler:

Dessa skÀrmdumpar togs i Fedora 27, eftersom det var dÀr jag fick de bÀsta resultaten, medan Debian 9, dÀr vissa Àldre versioner av terminaler (specifikt - mlterm) inte fungerade ordentligt med typsNitten. Lyckligtvis ÄtgÀrdades detta i senare versioner.
Observera nu visningen av strÀngen i xterm. Det visar sig att symbolen Mem och den följande semitiska tillhör RTL-skript (), sÄ de borde tekniskt sett visas frÄn höger till vÀnster. WebblÀsare, till exempel Firefox 57, hanterar korrekt ovanstÄende strÀng. En enklare variant av RTL-text Àr ordet "" pÄ hebreiska (). sÀger följande:
"MĂ„nga datorprogram kan inte korrekt visa flersprĂ„kig text. Till exempel bestĂ„r det hebreiska namnet "Sara" av tecknen sin (Ś©) (som visas till höger), följt av resh (Śš) och till sist he (Ś) (som ska visas till vĂ€nster)."
MÄnga terminaler klarar inte detta test: Alacritty, VTE-baserade terminaler i Gnome och XFCE, urxvt, st och xterm visar "Sara" baklÀnges, som om vi skulle skriva namnet som "Aras".

Ett annat problem med tvÄvÀgs texter Àr att de mÄste pÄ nÄgot sÀtt justeras, sÀrskilt nÀr det handlar om blandning av RTL och LTR-text. RTL-skript bör starta frÄn höger sida av terminalfönstret, men vad ska hÀnda i terminaler som normalt arbetar med LTR-engelska? De flesta av dem har inga specifika mekanismer och justerar hela texten till vÀnster (inklusive i Konsole). Undantagen Àr pterm och mlterm, som följer standarderna och justerar sÄdana rader till höger.

Skydd mot klipp och klistra
Den nĂ€sta kritiska egenskapen som jag har identifierat Ă€r skydd mot klipp och klistra. Ăven om det Ă€r allmĂ€nt kĂ€nt att kommandon som:
$ curl http://example.com/ | shÀr push-kommandon för att köra kod, Àr det fÄ som vet att dolda kommandon kan trÀnga in i konsolen vid klipp och klistra frÄn en webblÀsare, Àven efter noggrann inspektion. visar tydligt hur ett oskyldigt utseende kommando:
git clone git://git.kernel.org/pub/scm/utils/kup/kup.gitblir ett sÄdant problem vid insÀttning frÄn Horns webbplats i terminalen:
git clone /dev/null;
clear;
echo -n "Hello ";
whoami|tr -d 'n';
echo -e '!nDet var en dÄlig idé. Kopiera inte kod frÄn webbplatser du inte litar pÄ!
HÀr Àr den första raden av din /etc/passwd: ';
head -n1 /etc/passwd
git clone git://git.kernel.org/pub/scm/utils/kup/kup.gitHur fungerar det? Skadlig kod placeras i en block , som flyttas ut ur anvÀndarens synfÀlt med hjÀlp av CSS.
Àr tydligt avsett för att neutralisera sÄdana attacker. I detta lÀge omger terminalerna den klippt texten med ett par speciella escape-sekvenser för att informera skalet om textens ursprung. SÄ skalet fÄr signalen att det kan ignorera speciella tecken som kan finnas i den klippta texten. Alla terminaler, sÄ lÄngt tillbaka som det respekterade xterm, stöder denna funktion, men klippning i Bracketed-lÀge krÀver stöd frÄn skalet eller programmet som körs i terminalen. Till exempel behöver programvara som anvÀnder (samma Bash), en fil ~/.inputrc:
set enable-bracketed-paste onTyvÀrr visar testwebbplatsen Horn ocksÄ hur man kringgÄr detta skydd genom att formatera texten och för tidigt avsluta tillÀmpningen av Bracketed-lÀget. Detta fungerar eftersom vissa terminaler filtrerar escape-sekvenser felaktigt innan de lÀgger till sina egna. Till exempel lyckades jag aldrig avsluta testerna för Konsole, Àven med korrekt konfiguration. .inputrc filen. Detta innebÀr att du enkelt kan fÄ skador pÄ systemkonfigurationen pÄ grund av ett osupporterat program eller en felaktigt konfigurerad shell. Detta Àr sÀrskilt farligt nÀr man loggar in pÄ fjÀrrservrar, dÀr noggrant utförande av konfigurationen Àr mindre vanligt, sÀrskilt om du har mÄnga sÄdana fjÀrrmaskiner.
En bra lösning pÄ detta problem Àr ett insÀttningsbekrÀftelse-plugin för terminalen urxvt, som helt enkelt ber om tillstÄnd att klistra in vilken text som helst som innehÄller nya rader. Jag har inte hittat en mer sÀker lösning för den textattack som beskrivits av Horn.
Flikar och profiler
En populÀr funktion just nu Àr stöd för flikar, vilket vi kommer att definiera som ett terminalfönster som innehÄller flera terminaler. För olika terminaler skiljer sig denna funktion, och medan traditionella terminaler som xterm inte alls stöder flikar, har modernare versioner av terminaler som Xfce Terminal, GNOME Terminal och Konsole denna funktion. Urxvt har ocksÄ stöd för flikar, men endast om ett plugin anvÀnds. Men nÀr det gÀller stöd för flikar Àr Terminator den obestridda ledaren: den stöder inte bara flikar utan kan ocksÄ placera terminaler i godtycklig ordning (se bilden nedan).

En annan funktion hos Terminator Àr möjligheten att "gruppera" dessa flikar tillsammans och skicka samma tangenttryckningar till flera terminaler samtidigt, vilket ger ett grovt verktyg för att utföra massoperationer pÄ flera servrar samtidigt. En liknande funktion finns ocksÄ i Konsole. För att anvÀnda denna funktion i andra terminaler mÄste man anvÀnda tredjepartsprogramvara som , eller .
SÀrskilt bra fungerar flikarna tillsammans med profiler: till exempel kan du ha en flik för e-post, en annan för chatt och sÄ vidare. Detta stöds bra av terminalerna Konsole och GNOME Terminal. BÄda tillÄter varje flik att automatiskt starta sin egen profil. Terminator stöder ocksÄ profiler, men jag kunde inte hitta nÄgot sÀtt att automatiskt starta specifika program nÀr en viss flik öppnas. Andra terminaler har överhuvudtaget ingen uppfattning om "profil".
Ryschki
Det sista jag kommer att gÄ igenom i den första delen av denna artikel Àr utseendet pÄ terminalerna. Till exempel stöder GNOME, Xfce och urxvt genomskinlighet, men nyligen har de slutat stödja bakgrundsbilder, vilket fÄtt vissa anvÀndare att byta till en annan terminal. . Personligen Àr jag nöjd med den enklaste formen. Xresources, som stÀller in en grundlÀggande uppsÀttning bakgrundsfÀrger för urxvt. Men icke-standardfÀrgteman kan skapa problem. Till exempel, med applikationerna och , eftersom de redan anvÀnder sina egna fÀrger.
stöddes inte av fÀrger, och nya begrÀnsades ofta till en 256-fÀrgspalett. För erfarna anvÀndare som stylar sina terminaler, kan krav pÄ komplexa skal eller statusrader bli en obehaglig begrÀnsning. spÄrar vilka terminaler som har stöd för "True Color". Mina tester bekrÀftar att st, Alacritty och terminaler baserade pÄ VTE perfekt stöder True Color. Andra terminaler presterar inte sÄ bra i detta avseende och visar egentligen inte ens 256 fÀrger. Nedan kan du se skillnaden mellan stödet för True Color i terminalerna GNOME, st och xterm, som klarar detta bra med sin 256-fÀrgspalett, och urxvt, som inte bara misslyckas testet men ocksÄ visar olika blinkande symboler istÀllet.

Vissa terminaler analyserar ocksÄ texten för att hitta URL-mönster för att göra lÀnkar klickbara. Detta gÀller alla VTE-baserade terminaler, medan urxvt krÀver en speciell plugin-modul som transformera URL-adresser vid klick eller med hjÀlp av kortkommandon. Andra terminaler som jag testat visar URL-adresser pÄ andra sÀtt.
Slutligen Ă€r en ny trend för terminaler â valfri scrollbuffert. Till exempel, i st finns ingen scrollbuffert; det antas att anvĂ€ndaren kommer att anvĂ€nda en terminalmultiplexer, som tmux och .
I Alacritty finns det ocksÄ ingen bakÄtrullningsbuffert, men pÄ grund av "omfattande feedback" frÄn anvÀndare angÄende detta Àmne. Förutom dessa avvikare har varje terminal jag har undersökt som jag kunnat hitta stöd för bakÄtrullning.
Mellanliggande resultat
I den andra delen av materialet (i originalet var detta tvÄ olika artiklar, - anm. övers.) kommer vi att jÀmföra prestanda, minnesanvÀndning och latens. Men vi ser redan att vissa av de terminaler som övervÀgs har allvarliga brister. Till exempel kan anvÀndare som regelbundet arbetar med RTL-skript uppmÀrksamma mlterm och pterm, eftersom de hanterar sÄdana uppgifter bÀttre Àn andra. Konsole har ocksÄ visat sig fungera bra. AnvÀndare som inte arbetar med RTL-skript kan vÀlja nÄgot annat.
Ur sÀkerhetssynpunkt nÀr det gÀller skydd mot insÀttning av skadlig kod stÄr urxvt ut pÄ grund av sin sÀrskilda implementering av skydd mot denna typ av attacker, vilket jag tycker Àr definitivt lÀmpligt. De som söker efter nÄgra funktioner bör titta pÄ Konsole. Slutligen Àr det vÀrt att notera att VTE Àr en utmÀrkt bas för terminaler, vilket garanterar fÀrgstöd, URL-igenkÀnning och sÄ vidare. Vid första anblicken kan den standardterminal som levereras med din favoritmiljö uppfylla alla krav, men vi lÀmnar den frÄgan öppen tills vi utreder prestandan.
Vi fortsÀtter diskussionen
Ăverlag kan terminalernas prestanda verka som en överdriven frĂ„ga, men som det visar sig uppvisar vissa av dem en överraskande hög latens för sĂ„dan grundlĂ€ggande programvara. Vidare kommer vi att titta pĂ„ det som traditionellt kallas "hastighet" (egentligen Ă€r det scrollhastigheten) och hur mycket minne terminalen anvĂ€nder (med tanke pĂ„ att detta idag inte Ă€r lika kritiskt som för flera decennier sedan).
Fördröjning
Efter noggrant undersökande av terminalernas prestanda har jag kommit fram till att den viktigaste parametern i detta avseende Àr storleken pÄ latensen (ping). I min artikel Pavel Fatin undersökte fördröjningen hos olika textredigerare och antydde att terminaler i detta avseende kan fungera lÄngsammare Àn de snabbaste textredigerarna. Just denna antydan ledde mig, i slutÀndan, till att starta egna tester och skriva denna artikel.
Men vad Àr fördröjning, och varför Àr den sÄ viktig? I sin artikel definierade Fatin den som «fördröjningen mellan tangenttryckningen och den motsvarande uppdateringen pÄ skÀrmen» och citerade , dÀr det stÄr: «Fördröjningen i visuell Äterkoppling pÄ datorskÀrmen har stor pÄverkan pÄ skrivfötterens beteende och deras tillfredsstÀllelse».
Fatin förklarar att denna ping har djupare konsekvenser Ă€n bara tillfredsstĂ€llelse: «att skriva blir lĂ„ngsammare, fler misstag uppstĂ„r, ögon- och muskelspĂ€nningar ökar». Med andra ord kan en större fördröjning leda till skrivfel samt en minskning av kodkvaliteten, eftersom det medför en extra kognitiv belastning pĂ„ hjĂ€rnan. Men vad som Ă€r Ă€nnu vĂ€rre Ă€r att pingen «ökar ögon- och muskelspĂ€nningen», vilket tycks innebĂ€ra i framtiden (till synes syftar författaren pĂ„ problem med ögon, rygg, armar och givetvis synen, â övers. anm.) pĂ„ grund av upprepad belastning.
NÄgra av dessa effekter Àr vÀlkÀnda, och resultaten , publicerade redan 1976 i tidskriften Ergonomics, visar att en fördröjning pÄ 100 millisekunder «försÀmrar skrivhastigheten avsevÀrt». Nyligen har anvÀndarmanualen för GNOME angett pÄ 10 millisekunder, och om vi gÄr lÀngre, sÄ visar att idealet Àr 1 millisekund.
Fatin utförde sina tester pÄ textredigerare; han skapade ett bÀrbart verktyg som kallas , som jag anvÀnd för att kontrollera ping i terminalemulatorer. TÀnk pÄ att testet utfördes i simuleringslÀge: i verkligheten mÄste vi ta hÀnsyn till bÄde inmatningsfördröjning (tangentbord, USB-kontroller och sÄ vidare) och utmatningsfördröjning (grafikkortsbuffer, monitor). Enligt Fatins uppgifter ligger den typiska fördröjningen runt 20 ms. Med spelutrustning kan den uppnÄs pÄ endast 3 millisekunder. Eftersom vi redan har sÄdan snabb utrustning, bör applikationen inte introducera sin egen fördröjning. Fatins mÄl Àr att minska applikationens fördröjning till 1 millisekund, eller helst att nÄ ett fördröjningsfritt tillstÄnd. , som i .
HÀr Àr resultaten av mina mÀtningar, samt nÄgra av Fatins resultat för att visa att mitt experiment överensstÀmmer med hans tester:

Det första som förvÄnade mig var den bÀttre svarstiden hos Àldre program, som xterm och mlterm. Trots sÀmre registreringsfördröjning (2,4 ms) visade de ett bÀttre resultat Àn den snabbaste moderna terminalen (10,6 ms för st). Ingen modern terminal kommer under tröskeln pÄ 10 millisekunder. I synnerhet uppfyller Alacritty inte kraven för att vara "den snabbaste av alla existerande terminalemulatorer", Àven om dess resultat har förbÀttrats sedan den första kontrollen 2017. Faktum Àr att projektets författare och arbetar pÄ att förbÀttra rendering. Det Àr ocksÄ vÀrt att notera att Vim, som anvÀnder GTK3, Àr avsevÀrt lÄngsammare Àn sin GTK2-motsvarighet. Detta tyder pÄ att GTK3 skapar en extra fördröjning, som pÄverkar alla andra terminaler som anvÀnder det (Terminator, Xfce4 Terminal och GNOME Terminal).
Men för ögat kan skillnaderna vara osynliga. Som Fatin förklarar: "Det Àr inte nödvÀndigt att vara medveten om fördröjningen för att den ska pÄverka dig." Fatin varnar ocksÄ för standardavvikelsen: "Alla avvikelser i lÀngden pÄ fördröjningen (skakningar) skapar extra belastning pÄ grund av deras oförutsÀgbarhet."

Diagrammet ovan Àr taget frÄn en ren Debian 9 (stretch) med . Den hÀr miljön ger de bÀsta resultaten i latensmÀtningar. Det visar sig att GNOME skapar en extra ping pÄ 20 ms för alla mÀtningar. En möjlig förklaring till detta Àr att det finns program med synkron bearbetning av inmatningsevent. Fatin ger ett exempel pÄ detta fall. , som lÀgger till latens genom att behandla alla input-events synkront. GNOME Àr ocksÄ förinstÀllt med ett fönsterhanteringssystem. , vilket skapar ett extra lager av buffring, vilket pÄverkar ping och lÀgger till minst 8 millisekunders latens.

Rullningshastighet
NÀsta test Àr en traditionell kontroll av "hastighet" eller "bandbredd", som mÀter hur snabbt terminalen kan rulla ner sidan och visa en stor mÀngd text pÄ skÀrmen. Testets mekanik varierar; det ursprungliga testet bestod av att helt enkelt generera samma textstrÀng med kommandot seq. Andra tester inkluderar Thomas E. Dickys test (som Àr kopplad till xterm), dÀr en fil med namnet terminfo.src upprepade gÄnger I en annan prestandaöversyn av terminaler anvÀnder en strÀng av slumpmÀssiga byte i base32-kodning, som skrivs ut till terminalen med hjÀlp av cat. Luu anser att detta test Àr "sÄ oanvÀndbart referensvÀrde som man kan förestÀlla sig" och föreslÄr att man istÀllet anvÀnder terminalens respons som det primÀra mÄttet. Dicky kallade ocksÄ sitt test missvisande. Trots detta erkÀnner bÄda författarna att terminalfönstrets bandbredd kan vara ett problem. Luu upptÀckte att Emacs Eshell hÀngde vid visning av stora filer, och Dicky optimerade terminalen för att eliminera den visuella segheten i xterm. DÀrför finns det fortfarande en viss poÀng med detta test, men eftersom renderingsprocessen skiljer sig avsevÀrt mellan terminaler, kan det ocksÄ anvÀndas som en testkomponent för att kontrollera andra parametrar.

HÀr ser vi att rxvt och st sticker ut bland konkurrenterna, följt av det mycket nyare Alacritty, som utvecklas med fokus pÄ hastighet. DÀrefter kommer Xfce (familjen VTE) och Konsole, som arbetar nÀstan dubbelt sÄ snabbt. Sist i tur stÄr xterm, som Àr fem gÄnger lÄngsammare Àn rxvt. Under testet visade xterm ocksÄ mycket flimmer, och det var svÄrt att sÀrskilja den passerande texten, Àven om det var samma rad. Konsole visade sig vara snabb, men hade ibland "tricks": skÀrmen hÀngde ibland, vilket gjorde att texten visades delvis eller inte alls. Andra terminaler visade rader tydligt, inklusive st, Alacritty och rxvt.
Diki förklarar att skillnaderna i prestanda beror pÄ designen av scrollningsbuffrar i olika terminaler. I synnerhet anklagar han rxvt och andra terminaler för att "inte följa allmÀnna regler":
"Till skillnad frÄn xterm försökte rxvt inte visa alla uppdateringar. Om det hamnade efter skulle det avstÄ frÄn vissa uppdateringar för att kunna ikapp. Detta hade större inverkan pÄ den upplevda scrollhastigheten Àn pÄ organisationen av internminnet. En nackdel var att ASCII-animationen var nÄgot oprecis."
För att ÄtgÀrda den uppenbara trögheten hos xterm? föreslÄr Diki att anvÀnda resursen , vilket gör att xterm kan avstÄ frÄn vissa skÀrmutppdateringar för att inte hamna efter flödet. Mina tester bekrÀftar att fastScroll ökar prestandan och lyfter xterm till samma nivÄ som rxvt. Detta Àr dock en ganska grov tillfÀllig lösning, som Diki sjÀlv förklarar: "ibland verkar xterm - precis som konsole - stanna, eftersom det vÀntar pÄ en ny uppsÀttning skÀrmutppdateringar efter att vissa har tagits bort." I detta sammanhang verkar det som om andra terminaler har hittat den bÀsta kompromissen mellan hastighet och integritet i skÀrmen.
ResursanvÀndning
Oavsett om det Àr rimligt att betrakta scrollhastighet som en prestandamÀtning, gör detta test det möjligt att simulera belastningen pÄ terminalerna, vilket i sin tur gör att vi kan mÀta andra parametrar, sÄsom minnes- eller disk-anvÀndning. Metrikerna erhölls genom att köra det angivna testet seq under övervakning av Python-processen. Den samlade in data om rÀknarna för ru_maxrss, summan av ru_oublock och ru_inblock och en enkel tidsrÀknare.

I det hĂ€r testet ligger ST pĂ„ första plats med den lĂ€gsta genomsnittliga minnesanvĂ€ndningen pĂ„ 8 MB, vilket inte Ă€r förvĂ„nande med tanke pĂ„ att projektets huvudidĂ© Ă€r enkelhet. Lite mer anvĂ€nder mlterm, xterm och rxvt â cirka 12 MB. Ett annat anmĂ€rkningsvĂ€rt resultat Ă€r Alacritty, som krĂ€ver 30 MB för att fungera. DĂ€refter kommer terminaler av VTE-familjen med siffror mellan 40 och 60 MB, vilket Ă€r ganska mycket. Denna förbrukning kan förklaras av att dessa terminaler anvĂ€nder mer avancerade bibliotek, som GTK. Konsole hamnar sist med en kolossal minnesanvĂ€ndning pĂ„ 65 MB under testerna, Ă€ven om detta kan rĂ€ttfĂ€rdigas av dess omfattande funktionsuppsĂ€ttning.
JÀmfört med tidigare resultat frÄn för tio Är sedan, har alla program nu mycket högre minnesanvÀndning. Tidigare krÀvde Xterm 4 MB, och nu 15 MB bara för att starta. En liknande ökning ses hos rxvt, som nu i standardutförande krÀver 16 MB. Xfce Terminal tar 34 MB, vilket Àr tre gÄnger mer Àn tidigare, medan GNOME Terminal krÀver 20 MB. Naturligtvis genomfördes alla tidigare tester pÄ en 32-bitarsarkitektur. Vid LCA 2012, Rasty Russell , finns det mÄnga mer subtila anledningar som kan förklara den ökade minnesanvÀndningen. Med allt detta lever vi nu i en tid dÄ vi har hela gigabyte minne, sÄ vi klarar oss pÄ nÄgot sÀtt.
Trots det kan jag inte skaka av mig kÀnslan av att avsÀtta mer minne för sÄ grundlÀggande mjukvara som terminalen Àr en slöseri med resurser. Dessa program borde vara bland de minsta av de smÄ och borde kunna fungera pÄ vilken "lÄda" som helst, Àven en skokartong, om vi nÄgonsin kommer dit att de behöver utrustas med Linux-system (och ni vet att sÄ kommer att bli fallet). Men med dessa siffror kommer minnesanvÀndningen i framtiden att bli ett problem i alla miljöer vid start av flera terminaler, utom i situationer med nÄgra av de lÀttaste och mest begrÀnsade alternativen. För att kompensera för detta har GNOME Terminal, Konsole, urxvt, Terminator och Xfce Terminal ett daemon-lÀge som gör det möjligt att hantera flera terminaler genom en process, vilket begrÀnsar deras minnesanvÀndning.

Under mina tester kom jag fram till en annan ovĂ€ntad slutsats angĂ„ende diskens lĂ€s- och skrivprestanda: jag förvĂ€ntade mig verkligen inte att se nĂ„got hĂ€r, men det visade sig att vissa terminaler skriver de mest omfattande data till disken. SĂ„ledes hĂ„ller VTE-biblioteket faktiskt en scrollbuffert pĂ„ disken (denna funktionalitet , och det pĂ„gĂ„r fortfarande). Men till skillnad frĂ„n de gamla implementeringarna, sĂ„ Ă€r dessa data nu Ă„tminstone krypterade med hjĂ€lp av AES256 GCM (). Men det vĂ€cks en rimlig frĂ„ga: vad Ă€r det som Ă€r sĂ„ speciellt med VTE-biblioteket att det krĂ€ver en sĂ„dan icke-standardiserad implementeringâŠ
Slutsats
I den första delen av artikeln upptĂ€ckte vi att terminaler baserade pĂ„ VTE har en bra uppsĂ€ttning funktioner, men nu ser vi att detta Ă€r kopplat till vissa kostnader för att sĂ€kerstĂ€lla deras prestanda. Just nu Ă€r minnet inte ett problem, eftersom alla VTE-terminaler kan hanteras via en Daemon-process som begrĂ€nsar deras resursanvĂ€ndning. ĂndĂ„ kan gamla system, som har fysiska begrĂ€nsningar av mĂ€ngden RAM och kĂ€rnbuffer, fortfarande behöva tidigare versioner av terminalerna, eftersom de konsumerar betydligt mindre resurser. Ăven om VTE-terminaler har presterat bra i tester för bandbredd (scrollning), Ă€r deras visningsfördröjning av data pĂ„ skĂ€rmen över den faststĂ€llda tröskeln i GNOME-anvĂ€ndarhandboken. Troligtvis bör VTE-utvecklarna ta hĂ€nsyn till detta. Med tanke pĂ„ att Ă€ven nybörjare inom Linux oundvikligen kommer att stöta pĂ„ terminalen, kan de göra den mer anvĂ€ndarvĂ€nlig. För erfarna anvĂ€ndare kan övergĂ„ngen frĂ„n standardterminalen innebĂ€ra en minskad belastning pĂ„ ögonen och möjligheten att undvika yrkesskador och sjukdomar i framtiden pĂ„ grund av lĂ„ngvariga arbetspass. TyvĂ€rr ger endast de gamla xterm och mlterm oss den magiska pingtröskeln pĂ„ 10 millisekunder, vilket Ă€r oacceptabelt för mĂ„nga.
KontrollmÀtningar har ocksÄ visat att utvecklingen av grafiska miljöer i Linux har tvingat utvecklarna att göra en rad kompromisser. Vissa anvÀndare bör övervÀga att anvÀnda vanliga fönsterhanterare, eftersom de ger en avsevÀrd minskning av ping. TyvÀrr gick det inte att mÀta fördröjningen för Wayland: programmet Typometer, som jag anvÀnde, skapades för att förhindra det som Wayland Àr avsett att göra - att spionera pÄ andra fönster. Jag hoppas att Waylands sammansÀttning har bÀttre prestanda Àn X.org och att nÄgon i framtiden hittar ett sÀtt att mÀta fördröjningsnivÄn i denna miljö.
KĂ€lla: habr.com
