Terminali emulatorite ĂŒlevaade

MĂ”ned sĂ”nad meie tĂ”lkebĂŒroost: tavaliselt pĂŒĂŒtakse tĂ”lkida kĂ”ige vĂ€rskemaid materjale ja avaldusi, ja me ei ole erand. Kuid terminalid ei ole just need, mis uuenevad kord nĂ€dalas. SeetĂ”ttu tĂ”lkisime teile Antoine BoprĂ© artikli, mis ilmus 2018. aasta kevadel: vaatamata oma „vanusele” on see meie arvates endiselt asjakohane. Lisaks on originaal kahe artikli seeria, kuid otsustasime need ĂŒhendada ĂŒheks suureks postituseks.

Terminali emulatorite ĂŒlevaade

Terminalid mĂ€ngivad arvuti ajaloos erilist rolli, kuid viimastel aastakĂŒmnetel on nad olnud sunnitud koos kĂ€sureaga ellu jÀÀma, kuna graafilised liidesed on laialdaselt levinud. Terminalide emulaatorid asendasid oma riistvaralised venna, mis olid omakorda muudetud sĂŒsteemidest, mis kasutasid puidust kaartide ja lĂŒlitite sĂŒsteemi. Kaasaegsed distributsioonid pakuvad hulganisti terminali emulaatoreid eri vormide ja vĂ€rvitoonidega. Kuigi paljud on rahul standardse terminaliga, mille nende töökeskkond pakub, kasutavad mĂ”ned uhkusega tĂ”eliselt eksootilist tarkvara, et kĂ€ivitada oma lemmik shelli vĂ”i tekstiredaktorit. Kuid nagu me sellest artiklist nĂ€eme, ei ole kĂ”ik terminalid loodud ĂŒhesuguseks: need erinevad ĂŒksteisest funktsionaalsuse, suuruse ja tulemuslikkuse osas.

MĂ”ned terminalid on varustatud ĂŒllatavalt suurte turvaaukudega, lisaks omavad enamik tĂ€iesti erinevat funktsioonide komplekti, alates vahekaardiga liidese tosupportamisest kuni skriptideni. Kuigi me oleme varem kĂ€sitlenud terminali emulaatoreid, on see artikkel varasemate materjalide uuendamine, mis aitab lugejatel kindlaks teha, millist terminali kasutada 2018. aastal. Artikli esimeses pooles vĂ”rreldakse funktsioone ja teises hinnatakse tulemuslikkust.

Siin on minu ĂŒlevaatuses seotud terminalid:

Terminali emulatorite ĂŒlevaade

VĂ”imalik, et need ei ole kĂ”ige uuemad versioonid, kuna piirdusin stabiilsete kogumitega hetkel, mil materjali kirjutasingi, mille suutsin tööle saada Debian 9 vĂ”i Fedora 27 peal. Ainsaks erandiks on Alacritty. See on GPU-kiirenduse kasutav terminal ja on kirjutatud ebatavalisel ja uuel keelel - Rust. VĂ€lja jĂ€tsin oma ĂŒlevaatest veebiterminalid (sealhulgas ka Electron), sest eeltestid nĂ€itasid nende ÀÀrmiselt madalat jĂ”udlust.

Unicode-toe olemasolu

Alustasin oma teste Unicode-toe hindamisega. Terminaalide esimene test oli kuvada Unicode'i stringi Wikipedias: "Ă©, Δ, Й, ڧ, م, àč—, あ, ć¶, 葉 ja 말". See lihtne test nĂ€itab, kas terminal suudab töötada kogu maailmas. Terminal xterm ei kuva araabia tĂ€hemĂ€rki MĂ€lu vaikimisi seadistuses:

Terminali emulatorite ĂŒlevaade

Vaikimisi kasutab xterm klassikalist "fikseeritud" fonti, mis vastavalt samale Wikile, sisaldab „mĂ€rkimisvÀÀrset Unicode katvust alates 1997. aastast“. Selles fondis toimub midagi, mis pĂ”hjustab sĂŒmboli kuvamise tĂŒhjana, ja ainult siis, kui teksti fondi suurust suurendada 20+ punktini, hakkab sĂŒmbol lĂ”puks Ă”igesti kuvama. Siiski rikub selline „parandus“ teiste Unicode sĂŒmbolite kuvamist:

Terminali emulatorite ĂŒlevaade

Need ekraanipildid tehti Fedora 27-s, kuna see andis paremaid tulemusi kui Debian 9, kus mĂ”ned vanemad terminaliversioonid (konkreetsemalt — mlterm) ei suutnud fonte korralikult kĂ€sitleda. Õnneks on see hiljemates versioonides parandatud.

NĂŒĂŒd pöörake tĂ€helepanu xterm-is oleva rea kuvamisele. Selgub, et sĂŒmbol Mem ja sellele jĂ€rgnev Semitic Qoph kuuluvad RTL (right-to-left) stiilide alla, seega peaksid nad tehniliselt kuvama paremale. Veebibrauserid, nĂ€iteks Firefox 57, töötlevad ĂŒlaltoodud rida Ă”igesti. Lihtsam nĂ€ide RTL-tekstist on sĂ”na „Sarah“ heebrea keeles (Ś©ŚšŚ”). Wiki leht kahepoolsest tekstist ĂŒtleb jĂ€rgmist:

„Paljud arvutiprogrammid ei suuda kahe suunalist teksti Ă”igesti kuvada. NĂ€iteks juudi nimi „Sara” koosneb tĂ€htedest sin (Ś©) (mis tuleb paremale), seejĂ€rel resh (Śš) ja lĂ”puks chet (Ś”) (mis peaks ilmuma vasakule).“

Paljud terminalid ei lĂ€binud seda testi: Alacritty, Gnome ja XFCE VTE-pĂ”hised terminalid, urxvt, st ja xterm kuvavad „Sara” vastupidises jĂ€rjekorras, nagu oleksime selle nime kirjutanud kui „Aras”.

Terminali emulatorite ĂŒlevaade

Teine kahe suunalise teksti probleem on see, et neid tuleb kuidagi joondada, eriti kui tegemist on RTL ja LTR tekstide segamisega. RTL stsenaariumid peaksid algama terminali akna paremas servas, kuid mis peaks juhtuma terminalidega, mis vaikimisi töötavad LTR-inglise keeles? Enamik neist ei oma mingeid spetsiaalseid mehhanisme ja joondavad kogu teksti vasakule (sealhulgas Konsole). Eranditeks on pterm ja mlterm, mis jÀrgivad standardeid ja joondavad sellised read paremale.

Terminali emulatorite ĂŒlevaade

Sisestamise kaitse

JÀrgmine kriitiline omadus, mille ma enda jaoks mÀÀratlesin, on sisestamise kaitse. Kuigi on laialdaselt teada, et sellised loitsud:

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

on koodide tĂ€itmiseks mĂ”eldud push-kĂ€sklused, kuid vĂ€he on neid, kes teavad, et peidetud kĂ€sud vĂ”ivad kopitud ja kleebitud veebibrauserist konsooli sattuda, isegi pĂ€rast pĂ”hjalikku ĂŒlevaatamist. Janna Horni kontrollimisleht tĂ”husalt illustreerib, kuidas nĂ€iliselt kahjutu kĂ€sk:

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

muutub Horni saidilt kleepimisel terminalis tÔeliseks probleemiks:

git clone /dev/null;
    clear;
	echo -n "Tere ";
	whoami|tr -d 'n';
	echo -e '!nSee oli halb mĂ”te. Ära kopeeri koodi veebilehtedelt, mida sa ei usalda! 
	Siin on esimene rida sinu /etc/passwd: ';
	head -n1 /etc/passwd
	git clone git://git.kernel.org/pub/scm/utils/kup/kup.git

Kuidas see töötab? Kahjulik kood on eraldatud plokki , mis on CSS-i vahendite abil kasutaja silmist eemaldatud.

Bracketed paste reĆŸiim on selgelt ette nĂ€htud sarnaste rĂŒnnakute neutraliseerimiseks. Sel moel paigutavad terminalid sisestatud teksti paaridesse erilistesse escape-jĂ€rjestustesse, et teavitada shelli selle teksti pĂ€ritolust. Nii saab shell signaali, et ta vĂ”ib ignoreerida neid erimĂ€rke, mida sisestatud tekst vĂ”iks sisaldada. KĂ”ik terminalid, sealhulgas austatav xterm, toetavad seda funktsiooni, kuid Bracketed-reĆŸiim vajab toetust samuti shellilt vĂ”i rakenduselt, mis töötab terminalis. NĂ€iteks tarkvara, mis kasutab GNU Readline (sama Bash), vajab faili ~ /.inputrc:

set enable-bracketed-paste on

Kahjuks nĂ€itab Horni testimisait ka seda, kuidas seda kaitset ĂŒletada teksti enda vormindamise kaudu ja Bracketed-reĆŸiimi rakendamise enneaegse lĂ”petamisega. See töötab, sest mĂ”ned terminalid filtreerivad escape-jĂ€rjestused valesti enne omaenda lisamist. NĂ€iteks ei suutnud ma isegi Ă”ige konfiguratsiooni korral oma teste Konsole'is edukalt lĂ”petada .inputrc faili. See tĂ€hendab, et saate kergesti kahjustada sĂŒsteemi konfiguratsiooni toetamata rakenduse vĂ”i vale seadistuse tĂ”ttu. See on eriti ohtlik kaugserveritele logimise korral, kus konfiguratsiooni hoolikas töötlus esineb harvemini, eriti kui teid on palju selliseid kaugmasinaid.

Hea lahendus selle probleemi jaoks on terminali kinnitusplugin urxvt, mis lihtsalt kĂŒsib luba igasuguste uute ridadega teksti kleepimiseks. Minu jaoks pole selle kirjeldatud Horno tekstirĂŒnnaku jaoks turvalisemat varianti.

Vahekaartide ja profiilide

Populaarne funktsioon, mida nĂŒĂŒd toetatakse, on sakkide liidese tugi, mida mÀÀratleme kui ĂŒhe terminali akna, mis sisaldab endas veel mitmeid terminale. Erinevate terminalide jaoks erineb see funktsioon ning kuigi traditsioonilised xterm tĂŒĂŒpi terminalid ei toeta ĂŒldse sakke, on kaasaegsemad terminali versioonid nagu Xfce Terminal, GNOME Terminal ja Konsole selle funktsiooni omavad. Samuti on sakivaatamistoetuse olemas Urxvt, kuid ainult juhul, kui kasutatakse pluginat. Kuid sakivaatamise toetuse osas on terminator absoluutne liider: see toetab mitte ainult sakke, vaid suudab terminale paigutada ka suvalisse jĂ€rjekorda (vt allolevat pilti).

Terminali emulatorite ĂŒlevaade

Teise olulise omadusena vĂ”imaldab Terminator „rĂŒhmitada“ need sakkid kokku ja saata samu klahvivajutusi mitu terminali korraga, mis pakub jĂ€medat tööriista massiliste toimingute tegemiseks mitmel serveril korraga. Sarnane funktsioon on olemas ka Konsole'is. Selle funktsiooni kasutamiseks teistes terminalides on vajalik kolmanda osapoole tarkvara, nagu Cluster SSH, xlax vĂ”i tmux.

Eriti hĂ€sti töötavad sakkid koos profiilidega: nĂ€iteks vĂ”ite omada ĂŒhte sakkid e-kirjade jaoks, teist jututoas jne. Seda toetavad hĂ€sti terminalid Konsole ja GNOME Terminal. MĂ”lemad vĂ”imaldavad igal sakkidel automaatselt kĂ€ivitada oma profiili. Terminator toetab samuti profiile, kuid ma ei leidnud viisi teatud programmide automaatseks kĂ€ivitamiseks, kui avatakse konkreetne sakk. Teised terminalid ei tunne ĂŒldse mĂ”istet „profiil“.

RĂŒĂŒsid

Viimased, mida ma esimeses osas kĂ€sitlen, on terminalide vĂ€limus. NĂ€iteks GNOME, Xfce ja urxvt toetavad lĂ€bipaistvust, kuid hiljuti on nad taustapiltide toe lĂ”petanud, mis on sundinud mĂ”nda kasutajat ĂŒle minema terminalile. Tilix. Isiklikult mul see sobib ja on lihtsalt Xresources, mis seadistab urxvt jaoks pĂ”hikomplekti taustavĂ€rve. Siiski vĂ”ivad mittestandardsete vĂ€rviteemade kasutamine tekitada probleeme. NĂ€iteks, Solarized ei toimi rakendustega htop ja IPTraf, kuna need kasutavad juba oma vĂ€rve.

Originaalne VT100 terminal ei toetanud vĂ€rve ja uued olid sageli piiratud 256 vĂ€rvi paletiga. Kogenud kasutajatele, kes stiilivad oma terminale, vĂ”ivad kĂ€surea vĂ”i oleku ridadel keerulised viisid osutuda ebamugavaks piiranguks. Gist jĂ€lgib, millised terminalid toetavad "True Color". Minu testid kinnitavad, et st, Alacritty ja VTE-pĂ”hised terminalid toetavad True Colorit suurepĂ€raselt. Teised terminalid ei tunne end selles osas eriti hĂ€sti ja ei nĂ€ita isegi 256 vĂ€rvi. Allpool nĂ€ete erinevust True Color toetuses GNOME, st ja xterminaalide vahel, mis teevad selle ĂŒlesande 256-vĂ€rvilise paletiga hĂ€sti, ja urxvt, mis mitte ainult ei pruugi testi lĂ€bida, vaid nĂ€itab isegi vilkuvaid sĂŒmboleid.

Terminali emulatorite ĂŒlevaade

MĂ”ned terminalid analĂŒĂŒsivad ka teksti URL-mustrite tuvastamiseks, et muuta lingid klikkimiseks sobivaks. See kehtib kĂ”igi VTE-pĂ”histe terminalide kohta, samas kui urxvt vajab spetsiaalset plugina, mis muudab URL-aadresse klikkimise vĂ”i klahvikombinatsiooni abil. Teised testitud terminalid kuvavad URL-e muul viisil.

LÔpuks on uus trend terminalides - kerimisbuffri valikulisus. NÀiteks st-s puudub kerimisbuffers; eeldatakse, et kasutaja kasutab terminali multiplexerit, nagu tmux ja GNU Screen.

Alacritty-l puuduvad ka tagasikerimise moodulid, kuid peagi lisandub selle tugi «ulatusliku tagasiside» tÔttu sellel teemal kasutajatelt. Lisaks nendele eranditele toetab iga kontrollitud terminal, mille ma suutsin leida, tagasikerimist.

VahekokkuvÔte

Teises osas materjalist (originaalis olid need kaks erinevat artiklit, — toimetaja mĂ€rkus.) vĂ”rdleme jĂ”udlust, mĂ€lu kasutamist ja viivitust. Kuid me nĂ€eme juba, et mĂ”ned arutatavad terminalid omavad tĂ”siseid puudusi. NĂ€iteks vĂ”ivad regulaarsetes RTL-skriptidega töötavad kasutajad pöörata tĂ€helepanu mltermile ja ptermile, kuna need saavad sellega paremini hakkama kui teised. Konsole on samuti hĂ€sti esinenud. RTL-skriptidega mitte töötavad kasutajad vĂ”ivad valida midagi muud.

Turvalisuse seisukohalt paistab urxvt silma oma erilise kaitsetehnoloogia poolest, mis kaitseb kahjuliku koodi lisamise rĂŒnnakute eest – see tundub tĂ”eliselt mugav. Neile, kes otsivad rohkem funktsioone, tasub vaadata Konsole'i. LĂ”puks vÀÀrib mĂ€rkimist, et VTE on suurepĂ€rane baas terminalide jaoks, tagades toega vĂ€rve, URL-ide tuvastamise ja nii edasi. Esmapilgul vĂ”ib teie lemmikeskeskkonnaga kaasasolev vaike-terminal vastata kĂ”igile nĂ”udmistele, kuid jĂ€tame selle kĂŒsimuse lahtiseks, kuni saame aru jĂ”udlusest.

JĂ€tkame vestlust


Tegelikult vĂ”ib terminalide jĂ”udlus tunduda liialdatud probleemina, kuid nagu selgus, nĂ€itavad mĂ”ned neist ĂŒllatavalt suurt viivitust sellise fundamentaalse tarkvara jaoks. Samuti vaatleme edasi seda, mida tavaliselt nimetatakse ‘kiirus’ (tĂ”epoolest, see on kerimise kiirus) ja terminali mĂ€lu tarbimist (kortsu silmas pidades, et tĂ€na ei ole see nii kriitiline kui kĂŒmneid aastaid tagasi).

Viivitus

PĂ€rast terminalide jĂ”udluse pĂ”hjalikku uurimist jĂ”udsin jĂ€reldusele, et selle osas on kĂ”ige olulisem parameeter viivituse suurus (ping). Oma artiklis «TrĂŒki rÔÔmuga» Pavel Fatin vaatas erinevate tekstiredaktorite viivitust ja vihjas, et terminalid vĂ”ivad selles osas töötada aeglasemalt kui kĂ”ige kiiremad tekstiredaktorid. Just see vihje tĂ”i mind lĂ”puks oma testide lĂ€biviimisele ja selle artikli kirjutamisele.

Aga mis on viivitus ja miks see on nii oluline? Oma artiklis mÀÀratles Fatin selle kui «viivituse klahvi vajutamise ja vastava ekraani uuendamise vahel» ning tsiteeris «Inimese ja arvuti interaktsiooni juhend», milles öeldakse: «Ekraanil visuaalse tagasiside viivitus mÔjutab oluliselt masinakirjutaja kÀitumist ja rahulolu».

Fatin selgitab, et see pinge on sĂŒgavamate tagajĂ€rgedega kui pelgalt rahulolu: "trĂŒkkimine muutub aeglasemaks, vigu tekib rohkem, silmade ja lihaste pinge suureneb." TeisisĂ”nu, suurem viivitus vĂ”ib viia trĂŒkivigadeni ning koodi kvaliteedi langusele, suurendades aju tĂ€iendavat kognitiivset koormust. Kuid mis veel hullem, pinge "suurendab silmade ja lihaste pinget", mis viitab selgelt sellele, et kutsehaiguste areng tulevikus (ilmselt mĂ”tleb autor silmade, selja, kĂ€te ja loomulikult nĂ€gemise probleemidele — tĂ”lkija mĂ€rkus.) korduva pinge tĂ”ttu.

MĂ”ned neist mĂ”judest on ammu tuntud ning 1976. aastal ajakirjas Ergonomics avaldatud tulemused nĂ€itavad, et 100 millisekundi viivitus "halvendab mĂ€rkimisvÀÀrselt trĂŒkkimise kiirus." Hiljuti viidi GNOME'i kasutajate juhendisse uurimisevastuvĂ”etav reageerimisaeg 10 millisekundit, ja kui edasi minna, siis Microsoft Research nĂ€itab, et ideaalne on 1 millisekund. nĂ€itab, et ideaal on 1 millisekund.

Fatin viis oma teste lĂ€bi tekstiredaktorites; ta lĂ”i portaabeltööriista nimega Typometer, mida kasutasin pingete kontrollimiseks terminali emulatorites. Pidage meeles, et test viidi lĂ€bi simuleerimisreĆŸiimis: tegelikult peab arvesse vĂ”tma ka sisendi (klaviatuur, USB-kontroller jne) ja vĂ€ljundi (videokaardi puhversĂ€ilitamine, monitor) hilinemist. Fateri sĂ”nul on tĂŒĂŒpilistes konfiguratsioonides see umbes 20 ms. MĂ€ngijate varustusega on vĂ”imalik saavutada tulemuseks ainult 3 millisekundit. Kuna meil on juba nii kiire varustus, ei tohiks rakendus veelgi oma viivitust lisada. Fatini eesmĂ€rk on viia rakenduse viivitus 1 millisekundini vĂ”i vĂ”imalusel saavutada mÀÀramatute viivitustenii, kuiIntelliJ IDEA 15 Siin on aga minu mÔÔtmiste tulemused ja mĂ”ned Fatini tulemused, et nĂ€idata, et minu katse on kooskĂ”las tema testidega:.

Siin on minu mÔÔtmiste tulemused, samuti mÔned Fatini tulemused, et nÀidata, et minu eksperiment on kooskÔlas tema testidega:

Terminali emulatorite ĂŒlevaade

Esimene, mis mind ĂŒllatas, oli vanade programmide, nagu xterm ja mlterm, parem reageerimisaeg. Kehvema katkestuse latentsus (2,4 ms) saavutas tulemused, mis olid paremad kui kĂ”ige kiiremal tĂ€napĂ€evasel terminalil (10,6 ms st jaoks). Ükski tĂ€napĂ€evane terminal ei jÀÀ alla 10 millisekundi lĂ€vendile. Eriti Alacritty ei vasta nĂ”uetele, et olla "kiireim olemasolevatest terminali emulatoritest," kuigi selle tulemused on paranenud pĂ€rast esimese kontrolli 2017. aastal. TĂ”epoolest, projekti autorid on teadlikud olukorrast ja töötavad kuvamise parendamise nimel. Samuti tuleb mĂ€rkida, et GTK3-d kasutav Vim on oma GTK2 analoogist vĂ”rreldes oluliselt aeglasem. Sellest vĂ”ib jĂ€reldada, et GTK3 tekitab tĂ€iendavat latentsust, mis kajastub kĂ”igis teistes terminalides, mis seda kasutavad (Terminator, Xfce4 Terminal ja GNOME Terminal).

Kuid silmale vÔivad erinevused olla mÀrkamatud. Nagu selgitab Fatin: "ei ole alati vajalik teadvustada viivitust, et see oleks teie jaoks efektiivne." Fatin hoiatab ka standardhÀlbe eest: "kÔik katkestused viivituse kestuses (vÀrisemine) pÔhjustavad tÀiendavat koormust nende ettearvamatuse tÔttu."

Terminali emulatorite ĂŒlevaade

Ülaltoodud graafik on saadud puhtal Debian 9 (stretch) pĂ”hjal i3 aknahaldurist. See keskkond annab parimad tulemused viivituse mÀÀramise testides. Nagu selgus, loob GNOME kĂ”igi mÔÔtmiste jaoks tĂ€iendava 20 ms pingi. Sellele vĂ”ib olla vĂ”imalik seletus, et olemas on programmid, mis töötlevad sisendite sĂŒndmusi sĂŒnkroonselt. Fatin toob selle juhtumi jaoks nĂ€iteks Workrave, mis lisab viivituse, töötledes kĂ”ik sisend-sĂŒndmused sĂŒnkroonselt. Vaikimisi on GNOME varustatud ka aknahalduriga Mutter, mis loob tĂ€iendava puhverdamise taseme, mis mĂ”jutab pingi ja lisab vĂ€hemalt 8 millisekundi viivitust.

Terminali emulatorite ĂŒlevaade

Kerimiskiirus

JĂ€rgmine test on traditsiooniline «kiirus» vĂ”i «bĂ€nnide» kontroll, mis mÔÔdab, kui kiiresti terminal suudab lehte sirvida, kuvades suurt hulka teksti ekraanil. Testi mehhaanika varieerub; algne test koosnes lihtsalt sama teksti rea genereerimisest kĂ€suga seq. Teised testid hĂ”lmavad Thomas E. Dicki kontrolli (kaasa arvatud xterm), mille raames toimub korduv faili terminfo.src eksportimine. Veel ĂŒhes terminalide jĂ”udluse ĂŒlevaates Den Luu kasutab base32 kodeeringus juhuslike baitide rida, mis nĂ€idatakse terminalis kĂ€suga cat. Luu peab sellist testi "nii kasutuks standardiks, kui see vaid mĂ”eldav on", ning soovitab selle asemel kasutada terminali vastust pĂ”hinĂ€itajana. Diki nimetab oma testi eksitavaks. Siiski tunnustavad mĂ”lemad autorid, et terminali akna lĂ€bilaskevĂ”ime vĂ”ib olla probleem. Luu avastas Emacs Eshelli kĂŒlmumise suurte failide kuvamisel, samas kui Diki optimeeris terminali, et vabaneda visuaalsest aeglustumisest xtrerm. SeetĂ”ttu on selles testis ikkagi teatud mĂ”te, kuid kuna renderdamisprotsess erineb terminalist terminali, saab seda kasutada ka testkomponendina teiste parameetrite kontrollimiseks.

Terminali emulatorite ĂŒlevaade

Siit nĂ€eme, et rxvt ja st tĂ”usevad konkurentide seas esile, neid jĂ€rgneb palju uuem Alacritty, mis on vĂ€lja töötatud jĂ”udluse rĂ”huasetusega. JĂ€rgmised on Xfce (VTE perekond) ja Konsole, mis töötavad peaaegu kaks korda kiiremini. LĂ”pus on xterm, mis on viis korda aeglasem kui rxvt. Testi ajal nĂ€itas xterm ka tugevat virvendamist, mööduvat teksti oli raske nĂ€ha, isegi kui see oli sama rida. Konsole osutus kiireks, kuid aeg-ajalt „pettes“: kuvamine jÀÀb mĂ”nikord pidama, nĂ€idates teksti osaliselt vĂ”i mitte nĂ€idates seda ĂŒldse. Teised terminalid, sealhulgas st, Alacritty ja rxvt, nĂ€itasid ridu selgelt.

Diki selgitab, et jĂ”udluse erinevused tulenevad erinevate terminalide kerimisbuffrite disainist. EelkĂ”ige sĂŒĂŒdistab ta rxvt ja teisi terminale selles, et need "ei jĂ€rgi ĂŒldisi reegleid":

Erinevalt xterm'ist ei pĂŒĂŒdnud rxvt kĂ”iki vĂ€rskendusi kuvada. Kui see jÀÀb maha, loobub see mĂ”nedest vĂ€rskendustest, et jĂ€rgida, mis on rohkem mĂ”jutanud nĂ€iliselt kerimise kiirusest kui sise-mĂ€lu korraldusest. Üheks puuduseks oli see, et ASCII animatsioon oli pisut ebatĂ€pne.

Selle nĂ€ilise aegluse parandamiseks xterm'i puhul soovitab Dick kasutada ressurssi fastScroll, mis vĂ”imaldab xterm'il filtreerida mĂ”ned ekraani vĂ€rskendused, et mitte maha jÀÀda voost. Minu testid kinnitavad, et fastScroll parandab jĂ”udlust ja tĂ”stab xterm'i rxvt tasemele. See aga on ĂŒsna jĂ€ik lahendus, nagu Dick ise selgitab: "MĂ”nikord tundub xterm - nagu konsool - peatuma, kuna ootab uut ekraani vĂ€rskenduste komplekti pĂ€rast seda, kui mĂ”ned neist on eemaldatud". Sellega seoses nĂ€ib, et teised terminalid on leidnud parima tasakaalu kiiruse ja ekraani terviklikkuse vahel.

Ressursikasutamine

Hoolimata sellest, kui asjakohaseks vÔiks pidada kerimise kiirusest rÀÀkimist kui jÔudluse nÀitajast, vÔimaldab see test simuleerida koormust terminalides, mis omakorda vÔimaldab meil mÔÔta teisi parameetreid, nagu mÀlu vÔi ketta kasutamine. Metrika saadakse, kÀivitades antud testi. seq Python protsessi jÀlgimise all. See kogus loenduri andmeid. getrusage () kuna ru_maxrss, summa ru_oublock ja ru_inblock ja lihtne ajataimer.

Terminali emulatorite ĂŒlevaade

Sel testil saavutab ST esikoha kĂ”ige vĂ€iksema keskmise mĂ€lu tarbimisega 8 MB, mis pole ĂŒllatav, arvestades, et projekti pĂ”hieesmĂ€rk on lihtsus. Natuke rohkem tarbivad mlterm, xterm ja rxvt — umbes 12 MB.Veel ĂŒks silmapaistev tulemus on Alacritty, mille tööks on vajalik 30 MB. JĂ€rgmisel kohal on VTE pere terminĂĄlid, mille nĂ€itajad ulatuvad 40-60 MB-ni, mis on ĂŒsna palju. Selline tarbimine on seletatav sellega, et need terminalid kasutavad kĂ”rgema taseme teeke, nagu GTK. Konsole jÀÀb viimaseks, tarbides testi ajal tohutult 65 MB mĂ€lu, kuigi seda saab Ă”igustada tema ulatusliku funktsioonide komplektiga.

vĂ”rreldes kĂŒmne aasta taguste tulemustega, on kĂ”ik programmid hakanud oluliselt rohkem mĂ€lu tarbima. Varem nĂ”udis Xterm 4 MB, kuid nĂŒĂŒd vajab see kĂ€ivitamiseks 15 MB. Samuti on rxvt kasvanud ja nĂ”uab nĂŒĂŒd koheselt 16 MB. Xfce terminal vĂ”tab 34 MB, mis on kolm korda rohkem kui varem, samas kui GNOME Terminal vajab vaid 20 MB. Loomulikult viidi kĂ”ik varasemad testid lĂ€bi 32-bitistel arhitektuuridel. LCA 2012 sĂŒndmuses rÀÀkis Rasti Russell rÀÀkis, et on palju peenemaid pĂ”hjuseid, mis vĂ”ivad seletada mĂ€lutarbimise suurenemist. Sellega seoses elame tĂ€napĂ€eval ajal, mil meil on terveid gigabaite mĂ€lu, nii et me saame sellega kuidagi hakkama.

Siiski ei saa ma minema jĂ€tta tunnet, et suurema mĂ€lu eraldamine nii pĂ”hilisele tarkvarale nagu terminal on lihtsalt ressursi raiskamine. Need programmid peaksid olema kĂ”ige vĂ€iksemad, suutma töötada igasugune 'karbis', isegi kingakarbis, kui peaksime kunagi olukorda, kus need peavad olema varustatud Linux-sĂŒsteemidega (ja teate kĂŒll, et see tuleb). Kuid nende numbritega muutub mĂ€lu kasutamine tulevikus probleemiks igas keskkonnas, kui avada mitu terminali, vĂ€lja arvatud olukord, kus on mĂ”ned kĂ”ige kergemad ja piiratud vĂ”imalustega. Selle kompenseerimiseks on GNOME Terminalil, Konsolel, urxvt-l, Terminatoril ja Xfce Terminalil Daemon-reĆŸiim, mis vĂ”imaldab hallata mitut terminali ĂŒhe protsessi kaudu, piirates nende mĂ€lu tarbimist.

Terminali emulatorite ĂŒlevaade

Oma testide kĂ€igus jĂ”udsin veel ĂŒhe ootamatu tulemuseni, mis puudutab ketta lugemist-kirjutamist: ma ei oodanud siit ĂŒldse midagi nĂ€ha, kuid selgus, et mĂ”ned terminalid kirjutavad kĂ”ige suuremaid andmeid ketta. NĂ€iteks VTE teek hoiab tegelikult ketas kerimise vahemĂ€lu (see omadus mĂ€rgati juba 2010. aastal, ja see toimub siiani). Kuid erinevalt vanadest rakendustest on nĂŒĂŒd vĂ€hemalt need andmed AES256 GCM krĂŒptimisega kaitstud (versioonist 0.39.2). Kuid tekib mĂ”istlik kĂŒsimus, mis on siis nii erilist VTE raamatukogus, et see vajab sellist ebatavalist lĂ€henemist rakendusele


KokkuvÔte

Artikli esimeses osas leidsime, et VTE-pĂ”hised terminalid omavad head funktsioonide kogumit, kuid nĂŒĂŒd nĂ€eme, et nende jĂ”udluse tagamine toob kaasa teatud kulud. Praegu pole mĂ€lu probleem, kuna kĂ”iki VTE-terminalid saab hallata Daemon-protsessi kaudu, mis piirab nende vajadusi. Siiski vĂ”ivad vanad sĂŒsteemid, millel on fĂŒĂŒsilised piirangud operatiivmĂ€lu ja tuuma pufferi koguse osas, endiselt vajada varasemaid versioone terminalidest, kuna need tarbivad mĂ€rgatavalt vĂ€hem ressursse. Kuigi VTE-terminalid on lĂ€bi teinud head testid ribalaiuse (kerimise) osas, on nende andmete kuvamise latentsus ekraanil kĂ”rgem kui GNOME'i kasutajajuhendi kehtestatud piir. TĂ”enĂ€oliselt peaks VTE arendajatele seda silmas pidama. Arvestades, et isegi Linuxi algajate kasutajate jaoks on terminaliga kohtumine vĂ€ltimatu, vĂ”iksid nad muuta selle kasutajasĂ”bralikumaks. Kogenud tehnikutele tĂ€hendab vaikimisi terminali vahetus isegi visuaalse koormuse vĂ€hendamist ja professionaalsete vigastuste ning haiguste vĂ€ltimist tulevikus pikaajaliste töösessioonide tĂ”ttu. Kahjuks viivad meid maagilisse 10 millisekundi pingepingesse ainult vanad xterm ja mlterm, mis on paljudele vastuvĂ”etamatud.

KontrollmÔÔtmised on samuti nĂ€idanud, et tĂ€nu Linuxi graafiliste keskkondade arengule pidid arendajad tegema mitmeid kompromisse. MĂ”ned kasutajad peaksid vaatama tavapĂ€raste aknahaldurite poole, kuna need pakuvad mĂ€rkimisvÀÀrset pingelangust. Kahjuks ei Ă”nnestunud Waylandi viivitust mÔÔta: programm Typometer, mida kasutasin, oli loodud selleks, et Wayland takistab — teiste aknade pealt nuhkimise. Loodan, et Waylandi komposiit on jĂ”udluselt parem kui X.org, ja loodan ka, et tulevikus keegi leiab viisi viivituse taseme hindamiseks selles keskkonnas.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster