Terminalide emulaatorite ĂŒlevaade

MĂ”ned sĂ”nad meie tĂ”lkebĂŒroost: tavaliselt pĂŒĂŒtakse tĂ”lkida kĂ”ige uuemaid materjale ja avaldusi, ning me ei ole erand. Kuid terminalid ei ole asi, mis uuendatakse iga nĂ€dal. SeetĂ”ttu tĂ”lkisime teile Antoine Bopre'i artikli, mis avaldati 2018. aasta kevadel: vaatamata kaasaegsete mÔÔtmete jĂ€rgi "vanusele" pole meie arvates materjal kaotanud oma aktuaalsust. Lisaks on originaalis tegemist kahe artikli sarjaga, kuid otsustasime need ĂŒhte suure postitusse koondada.

Terminalide emulaatorite ĂŒlevaade

Terminalid omavad arvutiajaloos erilist kohta, kuid viimastel aastakĂŒmnetel on nad pidanud sĂ”na otseses mĂ”ttes koos kĂ€sureaga ellu jÀÀma laialdaselt levinud graafiliste liidesete taustal. Terminali emulaatorid asendasid oma riistvaralised kolleegid, mis omakorda olid perforaarkaardisĂŒsteemide ja lĂŒlitite modifikatsioon. Kaasaegsed distribtsioonid tulevad koos hulga erinevate terminali emulaatoritega, mis on igasuguste vormide ja vĂ€rvidega. Ja seni kui paljud on rahul oma töökeskkonna pakutava standardsel terminaliga, siis mĂ”ned uhkelt kasutavad tĂ”eliselt eksootilist tarkvara oma lemmikterminali vĂ”i tekstiredaktori kĂ€ivitamiseks. Kuid nagu me nĂ€eme sellest artiklist, ei ole kĂ”ik terminalid loodud ĂŒhtemoodi: nad erinevad omavahel oluliselt funktsionaalsuse, suuruse ja jĂ”udluse poolest.

MÔned terminalid omavad otseselt hÀmmastavaid turvaauke, lisaks on enamikul neist tÀiesti erinev funktsioonide komplekt, alates vahetustega liidese toimest kuni skriptideni. Kuigi me vaatasime terminali emulaatoreid kauges minevikus, on see artikkel varasema materjali ajakohastamine, mis aitab lugejatel mÀÀrata, millist terminali kasutada 2018. aastal. Artikli esimeses osas vÔrreldakse funktsioone ja teises hinnatakse jÔudlust.

Siin on minu kÀsitletud terminalid:

Terminalide emulaatorite ĂŒlevaade

VĂ”imalik, et need ei ole kĂ”ige vĂ€rskemaid versioone, kuna ma piirdusin stabiilsete kogumitega selle sisu kirjutamise hetkel, mis mul Ă”nnestus paigaldada Debian 9-le vĂ”i Fedora 27-le. Ainsaks erandiks on Alacritty. See on GPU-kiirendusega terminalide jĂ€reltulija ja on kirjutatud selle ĂŒlesande jaoks uues ja ebatavalises keeles - Rust. Ma ei toonud oma ĂŒlevaatesse veebiterminale (sealhulgas ka) Electron), sest eelteated nĂ€itasid nende ekstremalselt madalat jĂ”udlust.

Unicode'i tugi

Oma testid alustasin Unicode'i toega. Esimene terminalide test oli nende vĂ”ime kuvada Unicode'i rida, mille sain Wikipeedia artiklist: „é, Δ, Й, ڧ, م, àč—, あ, ć¶, 葉 ja 말“. See lihtne test nĂ€itab, kas terminal suudab ĂŒle maailma korrektselt töötada. Terminal xterm ei kuva araabia sĂŒmbolit Mem vaikimisi seadistustes:

Terminalide emulaatorite ĂŒlevaade

Vaikimisi kasutab xterm klassikalist "fikseeritud" fonte, mis, nagu vĂ€idab sama Wikipeedia, omab „olulist Unicode'i katvust alates 1997. aastast“. Selles fondis toimub midagi, mis pĂ”hjustab sĂŒmboli kuvamise tĂŒhja raamina ja ainult siis, kui teksti fonti suurendada 20+ punktini, hakkab sĂŒmbol lĂ”puks Ă”igesti kuvatama. Kuid selline "parandus" rikub teiste Unicode'i sĂŒmbolite kuvamist:

Terminalide emulaatorite ĂŒlevaade

Need ekraanipildid tehti Fedora 27-s, kuna see andis paremaid tulemusi vĂ”rreldes Debian 9-ga, kus mĂ”ned vanemad terminalid (konkreetsemalt - mlterm) ei suutnud korralikult fonte töödelda. Õnneks parandati see hilisemates versioonides.

NĂŒĂŒd pöörake tĂ€helepanu real xterm-is. Selgub, et sĂŒmbol Mem ja selle jĂ€rel olev semitiline Qoph kuulu RTS-i (right-to-left), seega peaksid nad tehniliselt olema kuvatud paremalt vasakule. Veebibrauserid, nagu nĂ€iteks Firefox 57, töötlevad eelnevalt toodud rida Ă”igesti. Lihtsamaks RTL-teksti nĂ€iteks on sĂ”na „Sara“ heebrea keeles (Ś©ŚšŚ”). Wikipeedia leht kahe suunda tekste ĂŒtleb jĂ€rgmist:

„Paljud arvutiprogrammid ei suuda Ă”igesti kuvada kahe suunda teksti. NĂ€iteks heebrea nimi „Sara“ koosneb sĂŒmbolitest sin (Ś©) (mis ilmub paremale), seejĂ€rel resh (Śš) ja lĂ”puks he (Ś”) (mis peaks ilmuma vasakule).“

Paljud terminalid ei lÀbi seda testi: Alacritty, Gnome ja XFCE VTE-pÔhised terminalid, urxvt, st ja xterm kuvavad 'Sara' tagurpidi, justkui oleksime seda nime kirjutanud kui 'Aras'.

Terminalide emulaatorite ĂŒlevaade

Teine kaheastmeliste tekstide probleem on see, et neid tuleb kuidagi joondada, eriti kui segatakse RTL ja LTR tekste. RTL-skeemid peaksid algama terminali akna paremal poolel, kuid mis peaks toimuma terminalides, mis vaikimisi töötavad LTR-inglise keeles? Enamik neist ei oma mingeid erilisi mehhanisme ning joondavad kogu teksti vasakule (sealhulgas Konsole'is). Eranditeks on pterm ja mlterm, mis jÀrgivad standardeid ning joondavad sellised read paremale.

Terminalide emulaatorite ĂŒlevaade

Kleepimisvastane kaitse

JÀrgmine kriitiline omadus, mille ma endale defineerisin, on kleepimisvastane kaitse. Kuigi on laialt tuntud, et jÀrgmised kÀsud:

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

on koodi kÀitamise push-kÀsud, siis vÀhe teatakse, et varjatud kÀsud vÔivad kopeerimise ja kleepimise kÀigus veebibrauserist konsooli pÀÀseda, isegi pÀrast pÔhjalikku kontrollimist. Janna Horne'i kontrollitud veebisait nÀitab, kuidas esmapilgul kahjutu kÀsk:

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

muutub Horne'i saidilt kleebitud kust 'paha asja' terminali selliseks:

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

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

Bracketed paste reĆŸiim on selgelt loodud sarnaste rĂŒnnakute neutraliseerimiseks. Selles reĆŸiimis ĂŒmbritsevad terminalid kleepitava teksti spetsiaalsete escape-jĂ€rjestuste paariga, et teavitada shelli selle teksti pĂ€ritolust. Nii saab shell signaali, et see vĂ”ib ignoreerida spetsiaalseid mĂ€rke, mida kleepitav tekst sisaldab. KĂ”ik terminalid, sealhulgas austatud xterm, toetavad seda funktsiooni, kuid Bracketed-reĆŸiimis kleepimine vajab shelli vĂ”i terminalis kĂ€ivitatud rakenduse toetust. NĂ€iteks GNU Readline'iga (sama Bash) töötav tarkvara vajab faili ~ /.inputrc set enable-bracketed-paste on ~ / .inputrc:

set enable-bracketed-paste on

Kahjuks nĂ€itab Horni testidesait ka seda, kuidas seda kaitset tekstivorminduse kaudu ringi hiilida ja Bracketed-reĆŸiimi enneaegset rakendamist lĂ”petada. See toimib, kuna mĂ”ned terminalid filtreerivad escape-jĂ€rjestusi valesti enne, kui lisavad oma. NĂ€iteks ei suutnud ma oma Konsole testide edukat lĂ”petamist isegi pĂ€rast Ă”iget seadistamist. .inputrc fail. See tĂ€hendab, et vĂ”ite kergesti saada sĂŒsteemi konfiguratsiooni kahjustusi, tulenevalt mitte toetatud rakendusest vĂ”i valesti seadistatud kestast. See on eriti ohtlik kaugetele serveritele sisenemisel, kus pĂ”hjalikku seadistamist kohatakse harvem, eriti kui teil on palju selliseid kaugeid masinaid.

Hea lahendus sellele probleemile on terminali kleepimise kinnituse plugin urxvt, mis lihtsalt kĂŒsib luba mistahes tekstide kleepimiseks, mis sisaldavad uusi ridu. Ma ei leidnud turvalisemat varianti Horni kirjeldatud tekstirĂŒnnaku jaoks.

Vahekaardid ja profiilid

Praegu populaarne funktsioon on vahekaartide toe olemasolu, mida me defineerime kui ĂŒht terminali akent, mis sisaldab veel mitmeid terminale. See funktsioon erineb erinevates terminalides, ja kuigi traditsioonilised xterm tĂŒĂŒpi terminalid ei toeta vahekaarte, on selle funktsiooni olemasolevad kaasaegsed terminalid nagu Xfce Terminal, GNOME Terminal ja Konsole. Urxvt toetab samuti vahekaarte, kuid ainult plugina kasutamisel. Samuti on vahekaartide poolest absoluutne liider Terminator: see mitte ainult ei toeta vahekaarte, vaid suudab ka terminale paigutada vabalt (vt allolevat pilti).

Terminalide emulaatorite ĂŒlevaade

Teine Terminatori omadus on vĂ”imalus „grupida” need vahekaardid kokku ja saata sama klahvivajutuse mitmele terminalile korraga, pakkudes toorest tööriista massiliste toimingute teostamiseks mitmel serveril korraga. Sarnane funktsioon on rakendatud ka Konsole'is. Selle funktsiooni kasutamiseks teistes terminalides on vajalik kolmanda osapoole tarkvara, nagu Cluster SSH, xlax vĂ”i tmux.

Erakordne on see, et kaardid töötavad koos profiilidega: nĂ€iteks vĂ”ib teil olla ĂŒks kaart e-posti jaoks, teine vestluse jaoks ja nii edasi. Seda toetavad hĂ€sti Konsole ja GNOME Terminal. MĂ”lemad vĂ”imaldavad igal kaardil automaatselt kĂ€ivitada oma profiili. Terminator toetab samuti profiile, kuid ma ei suutnud leida viisi, kuidas teatud programme automaatselt avada, kui avada konkreetne kaart. Teised terminalid ei tunne ĂŒldse "profiili" mĂ”istet.

Volang

Viimase asjana, mida ma selle artikli esimeses osas kĂ€sitlen, on terminalide vĂ€limus. NĂ€iteks GNOME, Xfce ja urxvt toetavad lĂ€bipaistvust, kuid hiljuti lĂ”petasid nad taustapiltide toe, mis sundis mĂ”nda kasutajat ĂŒlemineku terminalile. Tilix. Isiklikult mulle piisab sellest lihtsalt. Xresources, mis seab urxvt jaoks pĂ”hi taustavĂ€rvide komplekti. Siiski vĂ”ivad mitte-standardsed vĂ€rviteemad tekitada probleeme. NĂ€iteks Solarized ei tööta rakendustega htop ja IPTraf, kuna need kasutavad juba oma vĂ€rve.

Originaalne VT100 terminal ei toetanud vÀrve, samas kui uued olid sageli piiratud 256 vÀrvi paletiga. Kogenud kasutajatele, kes kohandavad oma terminale, vÔivad keerukate skriptide vÔi olekuread olla ebameeldivaks piiramise allikaks. Gist jÀlgib, millised terminalid toetavad "True Color"-it. Minu testid kinnitavad, et st, Alacritty ja VTE-pÔhised terminalid toetavad suurepÀraselt True Colorit. Teised terminalid ei toimi sellega hÀsti ja ei nÀita isegi 256 vÀrvi. Allpool nÀete erinevust True Colori toetuses GNOME, st ja xterm terminalide vahel, mis teevad oma 256 vÀrvi paletiga head tööd, ja urxvt, mis mitte ainult ei lÀbi testi, vaid nÀitab isegi vilkuvaid mÀrke nende asemel.

Terminalide emulaatorite ĂŒlevaade

MĂ”ned terminalid analĂŒĂŒsivad ka teksti URL-mallide osas, et muuta lingid klikatavaks. See kehtib kĂ”igi VTE-pĂ”histe terminalide kohta, samas kui urxvt vajab spetsiaalset pistikprogrammi, mis muudab URL-aadressid klikitavateks vĂ”i otseteede abil. Muud testitud terminalid nĂ€itavad URL-aadresse muude viiside kaudu.

LÔfinally, uus trend terminalides on kerimispuu valikuline olemasolu. NÀiteks st ei sisalda kerimispuhvrit; eeldatakse, et kasutaja kasutab terminali multiplexerit nagu tmux ja GNU Screen.

Alacritty's puuduvad ka tagasikerimispuhvrid, kuid see lisatakse peagi tema tugi tÔttu "ulatuslikule tagasisidele" selle teemaga seoses kasutajatelt. Peale nende erandite toetab iga terminal, mida olen suutnud leida, tagasikerimist.

VahekokkuvÔte

Teise osa materjalist (alguses olid need kaks erinevat artiklit — toimetaja mĂ€rkus) vĂ”rdleme jĂ”udlust, mĂ€lukasutust ja viivitust. Kuid me nĂ€eme juba, et mĂ”ned arutletud terminalid omavad tĂ”siseid puudusi. NĂ€iteks vĂ”ivad kasutajad, kes regulaarselt töötavad RTL-skriptidega, pöörata tĂ€helepanu mltermile ja ptermile, kuna need teevad sarnaste ĂŒlesannete tĂ€itmisel paremat tööd. Konsole on samuti hĂ€sti esinenud. RTL-skriptidega mitte tegelevad kasutajad vĂ”ivad valida midagi muud.

Kaitstuse osas kuritegevuse kodeerimise vastu eristub urxvt oma erilise kaitse realiseerimise tĂ”ttu, mis tundub mulle kindlasti mugav. Neile, kes otsivad mingit sĂ€ra, tasub vaadata Konsole’i. LĂ”puks peab mĂ€rkima, et VTE on suurepĂ€rane baas terminalide jaoks, mis garanteerib vĂ€rvide toe, URL-ide tuvastamise jpm. Esmapilgul vĂ”ib teie lemmikkeskkonna vaike-terminal vastata kĂ”igile nĂ”udmistele, kuid jĂ€tame selle kĂŒsimuse avatuks seni, kuni oleme jĂ”udluse kohta rohkem teada saanud.

JĂ€tkame juttu


Üldiselt vĂ”ib terminalide jĂ”udlus iseenesest tunduda liialdatud probleemina, kuid ĂŒllataval kombel nĂ€itavad mĂ”ned neist ĂŒllatavalt suurt viivitust sellise fundamentaalse tarkvara jaoks. Samuti vaatame lĂ€hemalt seda, mida traditsiooniliselt nimetatakse „kiirusel“ (tĂ”epoolest, see on kerimise kiirus) ja terminalide mĂ€lukasutust (vaadates, et see ei ole tĂ€na nii kriitiline kui dekadeid tagasi).

Viivitus

PĂ€rast terminalide jĂ”udluse pĂ”hjalikku uurimist olen jĂ”udnud jĂ€reldusele, et sellel alal on kĂ”ige olulisem parameeter viivituse suurus (ping). Ometi on oma artiklis „Kirjutame rÔÔmuga“ Pavel Fatin vaatas erinevate tekstiredaktorite viivitusi ja vihjas, et terminalid vĂ”ivad selles osas töötada aeglasemalt kui kĂ”ige kiiremad tekstiredaktorid. Just see vihje viis mind lĂ”puks oma testide kĂ€ivitamise ja selle artikli kirjutamiseni.

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“ ja tsiteeris „Inimese ja arvuti interaktsiooni juhend“, kus öeldakse: „Viivitus visuaalses tagasisides arvuti ekraanil mĂ”jutab olulisel mÀÀral kirjutaja kĂ€itumist ja tema rahulolu“.

Fatin selgitab, et sellisel pingel on sĂŒgavamad tagajĂ€rjed kui lihtsalt rahulolu: „kirjutamine muutub aeglasemaks, vigu tekib rohkem, silmade ja lihaste pinget suureneb“. TeisisĂ”nu, suurem viivitus vĂ”ib viia trĂŒkivigadeni ja ka koodi kvaliteedi languseni, kuna see tekitab ajus tĂ€iendavat kognitiivset koormust. Kuid mis veel hullem, pinget „suureneb silmade ja lihaste pinge“, mis nĂ€ib viitavat ametialastele vigastustele tulevikus (ilmselt peab autor silmas silmade, selja, kĂ€te ja loomulikult nĂ€gemisega seotud probleeme, — toimetaja mĂ€rk.) korduva pingete tĂ”ttu.

MĂ”ned neist mĂ”judest on teada juba pikka aega ja tulemused uuringud, mis avaldati juba 1976. aastal ajakirjas Ergonomics, nĂ€itavad, et 100 millisekundi viivitus „halvendab oluliselt sisestamise kiirus“. Hiljuti lisati GNOME'i kasutajajuhendisse vastuvĂ”etav reageerimisaeg 10 millisekundit, ja kui minna kaugemale, siis Microsoft Research

nĂ€itab, et ideaalne on 1 millisekund. Fatin tegi oma testid tekstiredaktorites; ta lĂ”i portatiivse tööriista nimega, mida kasutasin terminali emulatorite pingide kontrollimiseks. Pidage meeles, et test viidi lĂ€bi simuleerimisreĆŸiimis: reaalsuses tuleb arvesse vĂ”tta ka sisendi (klaviatuur, USB-kontroller jne) ja vĂ€ljundi (videokaardi puhversĂ€lu, monitor) viivitust. Fatini sĂ”nul on tĂŒĂŒpilistes konfiguratsioonides see umbes 20 ms. Gamerite varustuse olemasolul vĂ”ib saavutada vaid 3 millisekundi nĂ€itaja. Kuna meil on juba selline kiire varustus, ei tohiks rakendus oma viivitust lisada. Fatini eesmĂ€rk on viia rakenduse viivitus 1 millisekundini vĂ”i tĂ€ielikult viivitusteta komplekti saavutamisele. mÔÔdetava viivitusega, nagu IntelliJ IDEA 15.

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

Terminalide emulaatorite ĂŒlevaade

Esimene asi, mis mind ĂŒllatas, oli vanade programmide, nagu xterm ja mlterm, parem reageerimisaeg. Halvema registra viivitusega (2,4 ms) nĂ€itasid nad paremat tulemust kui kĂ”ige kiirem kaasaegne terminal (10,6 ms st jaoks). Ükski kaasaegne terminal ei ulatu alla 10 millisekundi piiri. EelkĂ”ige ei vasta Alacritty nĂ”uetele „kĂ”ige kiiremal olemasoleval terminali emulatoril“, ehkki selle tulemused on alates esimesest kontrollist 2017. aastal paranenud. TĂ”epoolest, projekti autorid on teadlikud olukorrast ja töötavad kuvamise parandamise nimel. Oluline on mĂ€rkida, et Vim, mis kasutab GTK3, on oma GTK2 analoogist mĂ€rgatavalt aeglasem. Sellest vĂ”ib jĂ€reldada, et GTK3 tekitab tĂ€iendavat viivitust, ja see kajastub kĂ”igis teistes terminalides, mis seda kasutavad (Terminator, Xfce4 Terminal ja GNOME Terminal).

Kuid silmale vĂ”ivad erinevused jÀÀda mĂ€rkamatuks. Nagu selgitab Fatin: „ei ole tingimata vajalik viivitust teadvustada, et sellel oleks teile mĂ”ju“. Fatin hoiatab ka standardhĂ€lbe eest: „kĂ”ik viivituse pikkuse (vĂ”nkumine) hĂ€ired lisavad tĂ€iendavat koormust nende ettearvamatuse tĂ”ttu“.

Terminalide emulaatorite ĂŒlevaade

Ülaltoodud graafik on saadud puhtal Debian 9 (stretch) koos i3 aknahalduriga. See keskkond annab parimaid tulemusi viivituskatsete korral. Selgus, et GNOME tekitab kĂ”igi mÔÔtmiste jaoks 20 ms lisaviivituse. Üks vĂ”imalik seletus on see, et töötavad programmid, mis töötlevad sisendĂŒritusi sĂŒnkroonselt. Fatin toob sellise juhtumi jaoks vĂ€lja Workrave, mille tĂ”ttu tekib viivitus, sest kĂ”ik sisendĂŒritused töödeldakse sĂŒnkroonselt. Vaikimisi on GNOME varustatud ka aknahalduriga Mutter, mis loob lisataseme puhvrisse, mis mĂ”jutab viivitust ning lisab vĂ€hemalt 8 millisekundi viivituse.

Terminalide emulaatorite ĂŒlevaade

Kerimiskiirus

JĂ€rgmine katse on traditsiooniline "kiirus" vĂ”i "lĂ€bivoolu" kontroll, mis mÔÔdab, kui kiiresti terminal suudab lehte kerida, kuvades suurt hulka teksti ekraanil. Katse mehhanika varieerub; algne test seisnes lihtsalt sama teksti rea genereerimises seq kĂ€suga. Muud testid hĂ”lmavad Thomas E. Dicki testi (xterm'i kaaslane), millega korduvalt vĂ€ljastatakse fail terminfo.src. Veel ĂŒhes terminallide jĂ”udlusĂŒlevaates Den Luu kasutab juhuslike baitide rida base32 kodeeringus, mis edastatakse terminalile cat abil. Luu peab sellist testi "nii kasutu standardiks, kui seda ette kujutada saab" ja soovitab kasutada terminali vastust peamise nĂ€itajana. Dick nimetab ka oma testi eksitavaks. Sellegipoolest tunnustavad mĂ”lemad autorid, et terminali akna lĂ€bilaskvus vĂ”ib olla probleem. Luu leidis, et Emacs Eshell hangub suurte failide kuvamisel, ja Dick optimeeris terminali, et vabaneda xterm'i visuaalsest aeglusest. SeetĂ”ttu on selles testis endiselt mĂ”ningane mĂ”te, kuid kuna renderdusprotsess erineb terminalist terminali, saab seda kasutada ka testikomponendina teiste parameetrite kontrollimiseks.

Terminalide emulaatorite ĂŒlevaade

Siin nĂ€eme, et rxvt ja st tĂ”ukavad konkurentidest ette, seejĂ€rel tuleb palju uuem Alacritty, mis on vĂ€lja töötatud jĂ”udlusele keskendudes. JĂ€rgnevateks on Xfce (VTE perekond) ja Konsole, mis töötavad peaaegu kaks korda kiiremini. Viimasena on xterm, mille tulemus on viis korda aeglasem kui rxvt. Testi kĂ€igus kĂ”ikus xterm ka tugevalt, liikuv tekst oli raske lugeda, isegi kui see oli sama rida. Konsole osutus kiireks, kuid mĂ”nikord „trikitas“: ekraan seisis aeg-ajalt, nĂ€idates teksti osaliselt vĂ”i mitte nĂ€idates seda ĂŒldse. Teised terminalid, sealhulgas st, Alacritty ja rxvt, esitasid read selgelt.

Diki selgitab, et jĂ”udluse erinevused on seotud erinevate terminalide kerimisbufferite disainiga. EelkĂ”ige sĂŒĂŒdistab ta rxvt-d ja teisi terminale selles, et nad „ei jĂ€rgi ĂŒldisi reegleid“:

„Erinevalt xtermist ei pĂŒĂŒdnud rxvt kuvada kĂ”iki uuendusi. Kui ta jĂ€i maha, loobus ta mĂ”nest uuendusest, et jĂ€rele jĂ”uda. See mĂ”jutas rohkem nĂ€ilist kerimiskiirus, kui sisemiste mĂ€lude korraldamine. Ühe miinusena oli ASCII animatsioon veidi ebatĂ€pne.“

Selle nĂ€iliselt aeglase xterm'i parandamiseks soovitab Diki kasutada ressurssi fastScroll, mis vĂ”imaldab xterm'il ekraani mĂ”ned uuendused kĂ”rvaldada, et mitte jÀÀda voost maha. Minu testid kinnitavad, et fastScroll parandab jĂ”udlust ja viib xterm'i rxvt tasemele. Kuid see on ĂŒsna kark, nagu Diki ise selgitab: „mĂ”nikord xterm - nagu ka konsole - nĂ€ib seisvat, kuna ta ootab uut ekraaniuuenduste komplekti pĂ€rast seda, kui mĂ”ned neist on eemaldatud“. Sellega seoses tundub, et teised terminalid on leidnud parima kompromissi kiirus ja ekraani terviklikkuse vahel.

Ressursitarbimine

Olenemata selle praktikalisusest, kas kÀimise kiirus on jÔudlusnÀitaja, vÔimaldab see test simuleerida koormust terminalides, mis omakorda vÔimaldab meil mÔÔta teisi parameetreid, nagu mÀlu- vÔi ketta kasutamine. mÔÔdikud saadi antud testi kÀivitamisega seq Python protsessi jÀlgimise all. See kogus loendurite andmeid getrusage () jaoks ru_maxrss, summa ru_oublock ja ru_inblock ja lihtne ajataimer.

Terminalide emulaatorite ĂŒlevaade

Selles testis saavutab ST esikoha, tarbides keskmiselt vaid 8 MB mĂ€lu, mis pole ĂŒllatav, arvestades, et projekti pĂ”hidee on lihtsus. Veidi rohkem vajavad mlterm, xterm ja rxvt — umbes 12 MB. MĂ€rkimisvÀÀrne tulemus on ka Alacritty, mille tööks on vaja 30 MB. JĂ€rgmistena on VTE perekonna terminalid, mille nĂ€itajad ulatuvad 40-60 MB-ni, mis on ĂŒsna palju. Sellist tarbimist saab seletada sellega, et need terminalid kasutavad kĂ”rgema taseme teeke, nagu GTK. Konsole on viimane, tarbides testide ajal hiiglaslikku 65 MB mĂ€lu, kuigi seda saab Ă”igustada selle ĂŒsna ulatusliku funktsioonide kogumiga.

VĂ”rreldes kĂŒmne aasta taguste tulemustega on kĂ”ik programmid hakkanud tarbima mĂ€rgatavalt rohkem mĂ€lu. Varem nĂ”udis Xterm 4 MB, nĂŒĂŒd aga 15 MB lihtsalt kĂ€ivitamiseks. Sarnane tarbimise tĂ”us on ka rxvt-l, mis nĂ”uab nĂŒĂŒd kastist vĂ€lja tulles 16 MB. Xfce terminal kulutab 34 MB, mis on kolm korda rohkem kui varem, samas GNOME Terminal nĂ”uab vaid 20 MB. Muidugi viidi kĂ”ik eelnevad testid lĂ€bi 32-bitise arhitektuuri peal. LCA 2012 Rasti Russell rÀÀkis, on palju peenemaid pĂ”hjuseid, mis vĂ”ivad selgitada mĂ€lu tarbimise kasvu. Sellegipoolest elame nĂŒĂŒd ajal, mil meil on terveid gigabaite mĂ€lu, nii et me saame sellega hakkama.

KĂŒll aga ei saa ma rahuldust, et sellise fundamentaalse tarkvara nagu terminal jaoks suurema mĂ€lu eraldamine on ressursside raiskamine. Need programmid peaksid olema vĂ€iksemad kui kĂ”ige vĂ€iksemad, olema vĂ”imelised töötama igasugustes "karpidest", isegi kingakarbid, kui peaksime kunagi jĂ”udma selleni, et neid tuleb varustada Linuxi sĂŒsteemidega (ja teate, et see nii ka on). Selliste numbritega muutub mĂ€lu kasutamine tulevikus probleemiks igas keskkonnas mitme terminali kĂ€ivitamisel, vĂ€lja arvatud olukordades, kus on mitu kĂ”ige kergemat ja piiratud vĂ”imalustega. Selle kompenseerimiseks on GNOME Terminalil, Konsole'il, urxvt-l, Terminatoril ja Xfce Terminalil Deemon-reĆŸiim, mis vĂ”imaldab hallata mitmeid terminale ĂŒhe protsessi kaudu, piirates nende mĂ€lu tarbimist.

Terminalide emulaatorite ĂŒlevaade

Testide kĂ€igus jĂ”udsin ma veel ĂŒhe ootamatu tulemuse juurde seoses ketta lugemise ja kirjutamisega: ootasin, et siin ei nĂ€e ma ĂŒldse midagi, kuid selgus, et mĂ”ned terminalid kirjutavad kĂ”ige mahukamaid andmeid kettale. Nii hoiab VTE teek tegelikult kettal kerimispuud; see omadus oli mĂ€rgatud juba 2010. aastal, ja see toimub siiani). Kuid erinevalt vanadest teostustest on nĂŒĂŒd, vĂ€hemalt, need andmed AES256 GCM abil krĂŒpteeritud (versioonist 0.39.2). Kuid tekib pĂ”hjendatud kĂŒsimus, mis on siis niivĂ”rd erilist biblioteegis VTE, et see nĂ”uab sellist ebastandardset lĂ€henemist


KokkuvÔte

Artikli esimeses osas avastasime, et VTE-baasil terminalidel on hea funktsioonide kogum, kuid nĂŒĂŒd nĂ€eme, et see on seotud mĂ”ningate kuludega nende soorituse tagamiseks. Praegu ei ole mĂ€lu probleemiks, kuna kĂ”iki VTE-terminalide saab hallata Daemon-protsessi kaudu, mis piirab nende isu. Siiski vĂ”ivad vanad sĂŒsteemid, millel on fĂŒĂŒsilised piirangud operatiivmĂ€lu ja tuuma vahemĂ€lu kogusele, endiselt vajada varasemaid terminalide versioone, kuna need tarbivad oluliselt vĂ€hem ressursse. Kuigi VTE-terminalid on osutunud hĂ€sti lĂ€bilaskevĂ”imetest (kerimine) testides, on nende andmete kuvamise viivitus ekraanil kĂ”rgem kui GNOME-i kasutusjuhendi kehtestatud lĂ€vi. TĂ”enĂ€oliselt peaksid VTE arendajad seda arvesse vĂ”tma. Arvestades, et isegi algajatele Linuxi kasutajatele on terminaliga kohtumine vĂ€ltimatu, vĂ”iksid nad muuta selle kasutajasĂ”bralikumaks. Kogenud geekide jaoks vĂ”ib vaikimisi terminalilt ĂŒleminek tĂ€hendada isegi koormuse vĂ€henemist silmadele ja vĂ”imalust vĂ€ltida tulevasi ametikahjustusi ja -haigusi pikaajaliste tööseansside tĂ”ttu. Kahjuks toovad meid vaid vanad xterm ja mlterm maagilise 10 millisekundi pingi lĂ€vepunkti, mis on paljudele vastuvĂ”etamatu.

KontrollmÔÔtmised nĂ€itasid ka, et Linuxi graafiliste keskkondade arengu tĂ”ttu pidid arendajad tegema mitu kompromissi. MĂ”ned kasutajad peaksid vaatama tavapĂ€raseid aknahaldureid, kuna need pakuvad mĂ€rkimisvÀÀrset pingelangust. Kahjuks ei Ă”nnestunud Waylandi viivitust mÔÔta: Typometeri programm, mida kasutasin, oli loodud selleks, et Wayland peaks takistama — teiste akende nuhkimist. Lootan, et Waylandi kompositsioon on jĂ”udluselt parem kui X.org, ja loodan ka, et tulevikus leiab keegi viisi selle keskkonna viivituse taseme hindamiseks.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster