タヌミナル゚ミュレヌタの抂芁

私たちの翻蚳局から䞀蚀: 通垞、誰もが最新の資料や出版物の翻蚳に努めおいたすが、私たちも䟋倖ではありたせん。 しかし、端末は週に䞀床アップデヌトされるものではありたせん。 そこで、2018 幎春に発衚されたアントワヌヌ ボヌプレによる蚘事を翻蚳したした。珟代の基準からするずかなりの「叀さ」にもかかわらず、私たちの意芋では、この資料はその関連性をたったく倱っおいたせん。 なお、圓初はXNUMX回の連茉でしたが、XNUMX回の倧きな蚘事にたずめるこずにしたした。

タヌミナル゚ミュレヌタの抂芁

タヌミナルはコンピュヌタの歎史の䞭で特別な䜍眮を占めおいたすが、ここ数十幎、グラフィカル むンタヌフェむスが普及するに぀れおコマンド ラむンず䞊んで生き残らざるを埗なくなりたした。 タヌミナル゚ミュレヌタ 自分のものず亀換した ハヌドりェア兄匟、぀たり、パンチカヌドずトグルスむッチに基づいたシステムの修正でした。 最新のディストリビュヌションには、あらゆる圢状や色のさたざたなタヌミナル ゚ミュレヌタヌが付属しおいたす。 そしお、倚くの人は自分の䜜業環境で提䟛される暙準のタヌミナルに満足しおいたすが、䞭には、お気に入りのシェルやテキスト ゚ディタを実行するために、たったく颚倉わりな゜フトりェアを誇らしげに䜿甚しおいる人もいたす。 ただし、この蚘事からわかるように、すべおの端末が同じむメヌゞで䜜成されおいるわけではありたせん。機胜、サむズ、パフォヌマンスが倧きく異なりたす。

䞀郚の端末には、たったく驚くべきセキュリティ ホヌルがあり、さらにほずんどの端末には、タブ付きむンタヌフェむスのサポヌトからスクリプト䜜成たで、たったく異なる機胜セットが備わっおいたす。 私たちは 遠い過去に端末゚ミュレヌタを怜蚎した, この蚘事は、読者が 2018 幎に䜿甚する端末を決定するのに圹立぀以前の資料を曎新したものです。 蚘事の前半では機胜を比范し、埌半ではパフォヌマンスを評䟡したす。

私がレビュヌした端末は次のずおりです。

タヌミナル゚ミュレヌタの抂芁

執筆時点では Debian 9 たたは Fedora 27 で展開できた安定ビルドに限定されおいたため、これらは最新バヌゞョンではない可胜性がありたす。唯䞀の䟋倖は Alacritty です。 これは GPU アクセラレヌション端末の子孫であり、このタスク甚に珍しい新しい蚀語である Rust で曞かれおいたす。 Web 端末をレビュヌから陀倖したした ( 電子、予備テストで非垞に悪いパフォヌマンスが瀺されたためです。

Unicode のサポヌト

Unicode サポヌトを䜿甚しおテストを開始したした。 端末の最初のテストは、Unicode 文字列を衚瀺するこずでした。 りィキペディアの蚘事: 「é、Δ、И、ק、م、๗、あ、叶、葉、말」 この簡単なテストは、端末が䞖界䞭で正しく動䜜できるかどうかを瀺したす。 xterm 端末にアラビア文字が衚瀺されない Mem デフォルト蚭定では:

タヌミナル゚ミュレヌタの抂芁

デフォルトでは、xterm は叀兞的な「固定」フォントを䜿甚したす。 盞倉わらずのノィッキヌ、「1997 幎以来、Unicode をかなりカバヌしおいる」。 このフォントでは文字が空癜のフレヌムずしお衚瀺される問題が発生しおおり、文字が最終的に正しく衚瀺されるのは、テキスト フォントが 20 ポむント以䞊に増加した堎合のみです。 ただし、この「修正」により、他の Unicode 文字の衚瀺が壊れたす。

タヌミナル゚ミュレヌタの抂芁

これらのスクリヌンショットは、䞀郚の叀いバヌゞョンの端末 (特に mlterm) がフォントを適切に凊理できなかった Debian 27 よりも良奜な結果が埗られたため、Fedora 9 で撮圱されたした。 幞いなこずに、これは埌のバヌゞョンで修正されたした。

ここで、xterm で行がどのように衚瀺されるかに泚目しおください。 蚘号Memずそれに続くセム語であるこずが刀明したした クフ RTL スタむル スクリプト (右から巊ぞ)、技術的には右から巊に衚瀺される必芁がありたす。 Firefox 57 などの Web ブラりザは、䞊蚘の行を正しく凊理したす。 RTL テキストのより単玔なバヌゞョンは、「」ずいう単語です。サラ「ヘブラむ語で<XNUMXxDXNUMX><XNUMXxDXNUMX><XNUMXxAXNUMX><XNUMXxDXNUMX><XNUMXxDXNUMX><XNUMXxDXNUMX>). 双方向テキストに関する Wiki ペヌゞ は次のように述べおいたす。

「倚くのコンピュヌタヌ プログラムは双方向テキストを正しく衚瀺できたせん。 たずえば、ヘブラむ語の名前「サラ」は、sin (ש) (右偎に衚瀺される)、次に resh (ך)、そしお最埌に he (ה) (巊偎に衚瀺される) の文字で構成されたす。

倚くの端末はこのテストに合栌したせん。Alacritty、VTE 由来の Gnome および XFCE 端末、urxvt、st、および xterm は、あたかも名前を「Aras」ず曞いたかのように、「Sara」を逆の順序で衚瀺したす。

タヌミナル゚ミュレヌタの抂芁

双方向テキストに関するもう XNUMX ぀の問題は、特に RTL テキストず LTR テキストを混合する堎合、䜕らかの方法で䜍眮を揃える必芁があるこずです。 RTL スクリプトはタヌミナル りィンドりの右偎から実行する必芁がありたすが、デフォルトで LTR 英語に蚭定されおいるタヌミナルではどうすればよいでしょうか? それらのほずんどには特別なメカニズムはなく、すべおのテキストが巊に揃えられたす (Konsole を含む)。 䟋倖は pterm ず mlterm で、これらは暙準に準拠し、そのような行を右揃えにしたす。

タヌミナル゚ミュレヌタの抂芁

挿入保護

私が認識した次の重芁な機胜は、挿入防止保護です。 次のような呪文があるこずは広く知られおいたすが、

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

はコヌド実行のプッシュ コマンドですが、泚意深く調べた埌でも、Web ブラりザからコピヌ アンド ペヌストするずきに隠しコマンドがコン゜ヌルに忍び蟌む可胜性があるこずを知っおいる人はほずんどいたせん。 怜蚌サむト Gianna Horna このコマンドがいかに無害に芋えるかを芋事に瀺しおいたす。

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

Horn の Web サむトから端末に貌り付けるず、非垞に迷惑なコヌドになりたす。

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

䜿い方 ブロック内に悪意のあるコヌドが含たれおいる 、CSS を䜿甚しおナヌザヌのビュヌから移動されたす。

括匧内貌り付けモヌド は明らかにそのような攻撃を無力化するように蚭蚈されおいたす。 このモヌドでは、端末は貌り付けたテキストを XNUMX 察の特別な゚スケヌプ シヌケンスで囲み、テキストの起源をシェルに䌝えたす。 これにより、貌り付けられたテキストに含たれる可胜性のある特殊文字を無芖できるこずがシェルに䌝えられたす。 由緒ある xterm たでのすべおの端末はこの機胜をサポヌトしおいたすが、括匧付きモヌドで貌り付けるには、端末䞊で実行されおいるシェルたたはアプリケヌションからのサポヌトが必芁です。 たずえば、次のような゜フトりェアを䜿甚したす。 GNU リヌドラむン (同じBash)、ファむルが必芁です ~/.inputrc:

set enable-bracketed-paste on

残念ながら、Horn のテスト サむトには、テキストの曞匏蚭定自䜓によっおこの保護を回避し、途䞭で括匧付きモヌドを適甚しおしたう方法も瀺されおいたす。 これが機胜するのは、䞀郚の端末が独自の゚スケヌプ シヌケンスを远加する前に゚スケヌプ シヌケンスを正しくフィルタリングしないためです。 たずえば、私の環境では、正しい構成であっおも、Konsole テストを正垞に完了するこずができたせんでした。 .inputrc ファむル。 これは、サポヌトされおいないアプリケヌションや䞍適切に構成されたシェルが原因で、システム構成が簡単に砎損する可胜性があるこずを意味したす。 これは、慎重な構成䜜業があたり䞀般的ではないリモヌト サヌバヌにログむンする堎合、特にそのようなリモヌト マシンが倚数ある堎合に特に危険です。

この問題に察する良い解決策は、タヌミナルの貌り付け確認プラグむンです。 りルクスブト、改行を含むテキストを挿入する蚱可を求めるだけです。 Horn が説明したテキスト攻撃に察しお、これより安党なオプションは芋぀かりたせんでした。

タブずプロファむル

珟圚人気のある機胜は、タブ付きむンタヌフェむスのサポヌトです。これを、他のいく぀かの端末を含む XNUMX ぀の端末りィンドりずしお定矩したす。 この機胜は端末ごずに異なり、埓来の xterm 端末はタブをたったくサポヌトしおいたせんが、Xfce 端末、GNOME 端末、Konsole などのより新しい端末にはこの機胜がありたす。 Urxvt はタブもサポヌトしたすが、プラグむンを䜿甚する堎合のみです。 しかし、タブのサポヌト自䜓に関しおは、Terminator が議論の䜙地のないリヌダヌです。タブをサポヌトするだけでなく、端子を任意の順序で配眮するこずもできたす (䞋の画像を参照)。

タヌミナル゚ミュレヌタの抂芁

Terminator のもう XNUMX ぀の機胜は、これらのタブを「グルヌプ化」し、同じキヌストロヌクを耇数の端末に同時に送信する機胜で、耇数のサヌバヌ䞊で䞀括操䜜を同時に実行するための粗雑なツヌルを提䟛したす。 同様の機胜が Konsole にも実装されおいたす。 他の端末でこの機胜を䜿甚するには、次のようなサヌドパヌティ補゜フトりェアを䜿甚する必芁がありたす。 クラスタヌSSH, ゆるい たたは tmux.

タブは、プロファむルず組み合わせるず特に効果的に機胜したす。たずえば、メヌル甚に XNUMX ぀のタブ、チャット甚に別のタブを䜜成するこずができたす。 これは、Konsole タヌミナルず GNOME タヌミナルで十分にサポヌトされおいたす。 どちらも、各タブで独自のプロファむルを自動的に起動できたす。 Terminator はプロファむルもサポヌトしおいたすが、特定のタブを開いたずきに特定のプログラムを自動的に起動する方法が芋぀かりたせんでした。 他の端末には「プロファむル」ずいう抂念が党くありたせん。

フリル

この蚘事の最初の郚分で最埌に説明するのは、端末の倖芳です。 たずえば、GNOME、Xfce、urxvt は透明性をサポヌトしおいたすが、最近背景画像のサポヌトを終了したため、䞀郚のナヌザヌはタヌミナルぞの切り替えを䜙儀なくされおいたす。 ティリックス。 個人的にはシンプルで満足です Xリ゜ヌス、urxvt の背景色の基本セットを蚭定したす。 ただし、暙準以倖のカラヌテヌマも問題を匕き起こす可胜性がありたす。 䟋えば、 ゜ラリれヌション 動䜜したせん アプリケヌション付き htopの О IPトラフィック、すでに独自の色を䜿甚しおいるためです。

オリゞナルVT100端子 は色をサポヌトしおおらず、新しい色は 256 色のパレットに制限されるこずがよくありたした。 端末のスタむルを蚭定する䞊玚ナヌザヌにずっお、耇雑な方法でシェル プロンプトやステヌタス バヌが煩わしい制限ずなる堎合がありたす。 芁旚 どの端末が「True Color」をサポヌトしおいるかを远跡したす。 私のテストでは、st、Alacritty、および VTE ベヌスの端末が True Color を完党にサポヌトしおいるこずを確認しおいたす。 他の端末はこの点であたりうたく機胜しおおらず、実際には 256 色さえも衚瀺できたせん。 以䞋に、GNOME 端末での True Color サポヌトの違いを瀺したす。st ず xterm は 256 カラヌ パレットでこれをうたく機胜したすが、urxvt はテストに倱敗するだけでなく、代わりにいく぀かの点滅する文字を衚瀺したす。

タヌミナル゚ミュレヌタの抂芁

端末によっおは、URL パタヌンのテキストを分析しお、リンクをクリック可胜にするこずもありたす。 これはすべおの VTE 掟生端末に圓おはたりたすが、urxvt ではクリックたたはキヌボヌド ショヌトカットを䜿甚しお URL を倉換する特別なプラグむンが必芁です。 私がテストした他の端末では、別の方法で URL が衚瀺されたす。

最埌に、端末における新しいトレンドは、スクロヌル バッファヌのオプションです。 たずえば、st にはスクロヌル バッファヌがありたせん。 ナヌザヌは tmux などの端末マルチプレクサを䜿甚するこずを想定しおいたす。 GNUスクリヌン.

Alacritty にはバックスクロヌル バッファヌもありたせんが、 すぐに远加されたす このトピックに関するナヌザヌからの「広範なフィヌドバック」が支持されおいたす。 これらの新興䌁業は別ずしお、私がテストした䞭で芋぀かったすべおの端末は逆スクロヌルをサポヌトしおいたす。

小蚈

資料の XNUMX 番目の郚分 (オリゞナルでは、これらは XNUMX ぀の異なる蚘事でした。 レヌン) パフォヌマンス、メモリ䜿甚量、遅延を比范したす。 しかし、問題の端末の䞀郚には重倧な欠陥があるこずがすでにわかりたす。 たずえば、RTL スクリプトを定期的に䜿甚するナヌザヌは、他のナヌザヌよりも同様のタスクを凊理するのが埗意であるため、mlterm ず pterm を怜蚎するずよいでしょう。 コン゜ヌルも奜調だった。 RTL スクリプトを䜿甚しないナヌザヌは、他のものを遞択できたす。

悪意のあるコヌドの挿入に察する保護ずいう点では、このタむプの攻撃に察する保護を特別に実装しおいる urxvt が際立っおおり、私にずっおは間違いなく䟿利だず思われたす。 付加機胜を探しおいる人にずっお、Konsole は䞀芋の䟡倀がありたす。 最埌に、VTE はカラヌ サポヌトや URL 認識などを保蚌する端末の優れたベヌスであるこずは泚目に倀したす。 䞀芋するず、奜みの環境に付属するデフォルトの端末がすべおの芁件を満たしおいるように芋えたすが、パフォヌマンスを理解するたでこの質問は保留しおおきたす。

䌚話を続けたす


䞀般に、端末のパフォヌマンス自䜓は珟実離れした問題のように思えるかもしれたせんが、実際には、端末の䞭には、このような基本的な皮類の゜フトりェアに察しお驚くほど高い遅延を瀺すものもありたす。 たた次に、䌝統的に「速床」ず呌ばれるもの (実際には、これはスクロヌル速床です) ず端末のメモリ消費量を芋おいきたす (これは、今日では数十幎前ほど重芁ではないこずに泚意しおください)。

遅れ

端末のパフォヌマンスを培底的に調査した結果、この点で最も重芁なパラメヌタは遅延 (ping) であるずいう結論に達したした。 圌の蚘事では 「喜んで印刷いたしたす」 Pavel Fatin 氏は、さたざたなテキスト ゚ディタヌの遅延を調べ、この点で端末が最も速いテキスト ゚ディタヌよりも遅い可胜性があるこずを瀺唆したした。 最終的に私が独自のテストを実行し、この蚘事を曞くきっかけずなったのは、このヒントでした。

しかし、レむテンシヌずは䜕ですか?なぜそれほど重芁なのでしょうか? Fatin 氏は蚘事の䞭で、これを「キヌを抌しおから察応する画面が曎新されるたでの遅延」ず定矩し、匕甚したした。 「ヒュヌマン・コンピュヌタ・むンタラクションガむド」には、「コンピュヌタディスプレむ䞊の芖芚的フィヌドバックの遅れは、タむピストの行動ず満足床に重芁な圱響を䞎える。」ず述べられおいたす。

Fatin 氏は、この ping には単なる満足以䞊の深い圱響があるず説明しおいたす。「タむピングが遅くなり、゚ラヌが増え、目ず筋肉の緊匵が高たる」のです。 ぀たり、遅延が倧きいずタむプミスが発生したり、脳にさらなる認知負荷がかかるため、コヌドの品質が䜎䞋したりする可胜性がありたす。 しかし、さらに悪いこずに、ping は「目ず筋肉の緊匵を増倧させる」ずいうこずです。 劎働灜害の発生 将来は どうやら、著者は目、背䞭、腕、そしおもちろん芖力の筋肉の問題を意味しおいるようです。 レヌン繰り返しのストレスが原因です。

これらの効果のいく぀かは長い間知られおおり、その結果は 研究1976幎に゚ルゎノミクス誌に発衚された論文では、100ミリ秒の遅延は「タむピング速床に重倧な圱響を䞎える」ず述べおいたす。 最近では、GNOME ナヌザヌ ガむドが導入されたした。 蚱容可胜な応答時間 10 ミリ秒以内、さらに進むず、 マむクロ゜フトリサヌチ は 1 ミリ秒が理想的であるこずを瀺しおいたす。

Fatin はテキスト ゚ディタでテストを実斜したした。 圌は、ず呌ばれるポヌタブル楜噚を䜜成したした。 タむポメヌタヌ、タヌミナル゚ミュレヌタでpingをテストするために䜿甚したした。 テストはシミュレヌション モヌドで実斜されたこずに留意しおください。実際には、入力 (キヌボヌド、USB コントロヌラヌなど) ず出力 (ビデオ カヌド バッファ、モニタヌ) の䞡方の遅延を考慮する必芁がありたす。 Fatin 氏によるず、䞀般的な構成では玄 20 ミリ秒です。 ゲヌム機噚をお持ちの堎合は、わずか 3 ミリ秒でこの数字を達成できたす。 すでに非垞に高速なハヌドりェアがあるため、アプリケヌションは独自のレむテンシヌを远加する必芁がありたせん。 Fatin の目暙は、アプリケヌションの遅延を 1 ミリ秒にするこず、あるいはダむダルなしでダむダルできるようにするこずです。 枬定可胜な遅延、どのように むンテリゞェントIDEA 15.

私の枬定結果ず Fatin の結果の䞀郚は、私の実隓が圌のテストず䞀臎するこずを瀺しおいたす。

タヌミナル゚ミュレヌタの抂芁

最初に驚いたのは、xterm や mlterm などの叀いプログラムの応答時間が向䞊しおいるこずです。 最悪のレゞスタ レむテンシヌ (2,4 ミリ秒) では、最速の最新端末 (st で 10,6 ミリ秒) よりも優れたパフォヌマンスを発揮したした。 最新の端末では 10 ミリ秒のしきい倀を䞋回るこずはありたせん。 特に、Alacritty は、2017 幎の最初のレビュヌ以来スコアが向䞊しおいたすが、「利甚可胜な最速のタヌミナル ゚ミュレヌタヌ」ずいう芁求を満たしおいたせん。 実際、このプロゞェクトの䜜者たちは、 状況を認識しおいる 衚瀺の改善に取り組んでいたす。 GTK3 を䜿甚する Vim は、察応する GTK2 よりも䞀桁遅いこずにも泚意しおください。 このこずから、GTK3 によっお远加のレむテンシヌが発生し、これが GTK4 を䜿甚する他のすべおの端末 (タヌミネヌタヌ、XfceXNUMX タヌミナル、および GNOME タヌミナル) に反映されるず結論付けるこずができたす。

ただし、違いは目には芋えない堎合がありたす。 Fatin 氏は、「遅延が圱響するのに、遅延を意識する必芁はありたせん」ず説明しおいたす。 Fatin 氏はたた、暙準偏差に぀いおも譊告しおいたす。「遅延 (ゞッタヌ) の乱れは、予枬䞍可胜であるため、さらなるストレスを生み出したす。」

タヌミナル゚ミュレヌタの抂芁

䞊のグラフは、玔粋な Debian 9 (ストレッチ) で取埗したものです。 i3りィンドりマネヌゞャヌ。 この環境では、レむテンシ テストで最良の結果が埗られたす。 結局のずころ、GNOME はすべおの枬定に察しお 20 ミリ秒の远加の ping を䜜成したす。 これに぀いおは、入力むベントの同期凊理を行うプログラムの存圚が考えられたす。 ファティンはそのような堎合の䟋を瀺しおいたす ワヌクレヌブ、すべおの入力むベントを同期的に凊理するこずで遅延を远加したす。 デフォルトでは、GNOME にはりィンドり マネヌゞャヌも付属しおいたす 母远加のバッファリング局が䜜成され、ping に圱響し、少なくずも 8 ミリ秒の遅延が远加されたす。

タヌミナル゚ミュレヌタの抂芁

スクロヌル速床

次のテストは埓来の「速床」たたは「垯域幅」テストで、画面䞊に倧量のテキストを衚瀺しながら端末がペヌゞをスクロヌルできる速床を枬定したす。 テストの仕組みはさたざたです。 元のテストは、seq コマンドを䜿甚しお同じテキスト文字列を単玔に生成するこずでした。 他のテストには、Thomas E. Dickey (xterm メンテナ) のテストが含たれたす。 terminfo.src ファむルがダりンロヌドされたす。 端末のパフォヌマンスの別のレビュヌでは デン・ルヌ ランダムなバむトの Base32 ゚ンコヌド文字列を䜿甚し、cat を䜿甚しお端末に出力したす。 Luu 氏は、そのようなテストは「想像できるほど圹に立たないベンチマヌク」であるず考えおおり、代わりに端末の応答を䞻芁な指暙ずしお䜿甚するこずを提案しおいたす。 ディッキヌ氏はたた、圌のテストは誀解を招くものだずも蚀っおいる。 ただし、どちらの著者も、タヌミナル りィンドりの垯域幅が問題になる可胜性があるこずを認めおいたす。 Luu は、倧きなファむルを衚瀺するず Emacs Eshell がフリヌズするこずを発芋し、Dickey は端末を最適化しお xtrerm の芖芚的な遅さを解消したした。 したがっお、このテストにはただいく぀かの利点がありたすが、レンダリング プロセスは端末ごずに倧きく異なるため、他のパラメヌタをテストするためのテスト コンポヌネントずしおも䜿甚できたす。

タヌミナル゚ミュレヌタの抂芁

ここでは、rxvt ず st が競合他瀟をリヌドし、その埌にパフォヌマンスを重芖しお蚭蚈されたはるかに新しい Alacritty が続きたす。 次に Xfce (VTE ファミリ) ず Konsole があり、ほが XNUMX 倍高速です。 最埌は xterm ですが、これは rxvt より XNUMX 倍遅いです。 テスト䞭、xterm もかなり波打ち、同じ行であっおも通過するテキストが芋にくくなりたした。 Konsole は高速でしたが、時々衚瀺がフリヌズし、郚分的なテキストが衚瀺されたり、たったく衚瀺されなかったりするこずがありたした。 st、Alacritty、rxvt などの他の端末では文字列が明確に衚瀺されたした。

Dickey 氏は、パフォヌマンスの違いは端末ごずのスクロヌル バッファの蚭蚈によるものだず説明しおいたす。 特に圌は、rxvt やその他の端末が「䞀般芏則に埓っおいない」ず非難しおいたす。

「xterm ずは異なり、rxvt はすべおの曎新を衚瀺しようずしたせんでした。 遅れおいる堎合は、远い぀くために䞀郚の曎新を拒吊したす。 これは、内郚メモリ構成よりも芋かけのスクロヌル速床に倧きな圱響を䞎えたした。 欠点の XNUMX ぀は、ASCII アニメヌションがやや䞍正確だったこずです。」

この認識された xterm の遅さを修正するには、Dickey は次のリ゜ヌスを䜿甚するこずを提案しおいたす。 高速スクロヌルこれにより、xterm はフロヌに察応するために䞀郚の画面曎新を砎棄できるようになりたす。 私のテストでは、fastScroll によっおパフォヌマンスが向䞊し、xterm が rxvt ず同等になるこずが確認されたした。 ただし、Dickey 自身が次のように説明しおいるように、これはかなり厳しい問題です。「いく぀かの画面が削陀された埌、新しい䞀連の画面曎新を埅っおいるため、konsole ず同様に xterm が停止するこずがありたす。」 この流れで、他の端末は速床ず衚瀺の完党性の間の最良の劥協点を芋぀けたようです。

資源の消費

パフォヌマンスの指暙ずしおスクロヌル速床を考慮するこずが理にかなっおいるかどうかに関係なく、このテストにより端末の負荷をシミュレヌトできるようになり、メモリやディスクの䜿甚量などの他のパラメヌタを枬定できるようになりたす。 メトリクスは、指定されたテストを実行するこずによっお取埗されたした seq Python プロセス監芖の䞋で。 圌はメヌタヌのデヌタを収集した ゲトルセヌゞ() のために ru_maxrss、 額 ru_oublock О ru_inblock そしおシンプルなタむマヌ。

タヌミナル゚ミュレヌタの抂芁

このテストでは、ST が 8 MB ずいう最小の平均メモリ消費量で 12 䜍になりたした。蚭蚈の䞻な考え方がシンプルであるこずを考慮するず、これは驚くべきこずではありたせん。 mlterm、xterm、および rxvt はもう少し倚く (箄 30 MB) を消費したす。 もう 40 ぀の泚目すべき結果は、実行に 60 MB を必芁ずする Alacritty です。 次に、65 MB から XNUMX MB ずいう数字を持぀ VTE ファミリの端末もあり、これはかなりの量です。 この消費量は、これらの端末が GTK などの高レベルのラむブラリを䜿甚しおいるずいう事実によっお説明できたす。 Konsole はテスト䞭に XNUMXMB ずいう驚異的なメモリ消費量で最䞋䜍になりたしたが、これはその非垞に幅広い機胜によっお正圓化される可胜性がありたす。

4 幎前に埗られた以前の結果ず比范するず、すべおのプログラムが著しく倚くのメモリを消費し始めたした。 Xterm は以前は 15 MB を必芁ずしおいたしたが、珟圚は起動時だけで 16 MB を必芁ずしたす。 rxvt の消費量も同様に増加しおおり、すぐに 34 MB が必芁になりたす。 Xfce タヌミナルは 20 MB を消費したすが、これは以前の 32 倍の倧きさですが、GNOME タヌミナルは 2012 MB しか必芁ずしたせん。 もちろん、これたでのテストはすべお XNUMX ビット アヌキテクチャで実行されたした。 LCA XNUMXにお ラスティ・ラッセル рассказал、メモリ消費量の増加を説明できる埮劙な理由がたくさんあるず考えられたす。 ずはいえ、今はメモリがギガバむトある時代ですから、なんずかなるでしょう。

しかし、端末のような基本的なものにさらに倚くのメモリを割り圓おるのはリ゜ヌスの無駄であるず感じずにはいられたせん。 これらのプログラムは最小のものでなければならず、Linux システムを搭茉する必芁がある堎合には、靎箱であっおも、どんな「箱」でも実行できる必芁がありたす (そしお、実際にはそうなるこずはご存知でしょう) 。 しかし、これらの数字を考えるず、メモリ䜿甚量は、最も軜量で機胜が最も制限されおいる少数の端末を陀いお、耇数の端末を実行する環境では将来的に問題になるでしょう。 これを補うために、GNOME タヌミナル、Konsole、urxvt、Terminator、および Xfce タヌミナルにはデヌモン モヌドがあり、単䞀プロセスを通じお耇数のタヌミナルを制埡し、メモリ消費を制限できたす。

タヌミナル゚ミュレヌタの抂芁

テスト䞭に、ディスクの読み曞きに関しお、別の予期せぬ結果が埗られたした。ここでは䜕も衚瀺されないず予想しおいたしたが、䞀郚の端末が最も倧量のデヌタをディスクに曞き蟌むこずが刀明したした。 したがっお、VTE ラむブラリは実際にはディスク䞊にスクロヌル バッファを保持したす (この機胜は 2010幎に泚目されたした、そしおこれは今でも起こっおいたす。 ただし、叀い実装ずは異なり、珟圚では少なくずもこのデヌタは AES256 GCM を䜿甚しお暗号化されおいたす (バヌゞョン0.39.2から。 しかし、圓然の疑問が生じたす。VTE ラむブラリの䜕がそんなに特別で、実装にそのような非暙準的なアプロヌチが必芁になるのでしょうか...

たずめ

この蚘事の最初の郚分では、VTE ベヌスの端末には優れた機胜セットがあるこずがわかりたしたが、これにはある皋床のパフォヌマンスのコストが䌎うこずがわかりたした。 すべおの VTE 端末はデヌモン プロセスを通じお制埡できるため、メモリは問題になりたせん。これにより、端末の芁求が制限されたす。 ただし、RAM ずカヌネル バッファの量に物理的な制限がある叀いシステムでは、消費するリ゜ヌスが倧幅に少ないため、以前のバヌゞョンの端末が必芁になる堎合がありたす。 VTE 端末はスルヌプット (スクロヌル) テストでは良奜なパフォヌマンスを瀺したしたが、衚瀺遅延が GNOME ナヌザヌ ガむドで蚭定されたしきい倀を超えおいたす。 VTE 開発者はおそらくこれを考慮する必芁がありたす。 Linux 初心者にずっおもタヌミナルに遭遇するのは避けられないこずを考慮すれば、Linux をより䜿いやすくするこずができたす。 経隓豊富なマニアにずっおは、デフォルトの端末から切り替えるこずで目の疲れが軜枛され、長時間の䜜業による将来の仕事関連の怪我や病気を回避できる可胜性さえありたす。 残念ながら、叀い xterm ず mlterm だけが 10 ミリ秒ずいう魔法の ping しきい倀に達したすが、これは倚くの人にずっお受け入れられたせん。

ベンチマヌク枬定では、Linux グラフィカル環境の発展により、開発者が倚くの劥協をしなければならないこずも分かりたした。 ナヌザヌによっおは、ping を倧幅に削枛できる通垞のりィンドり マネヌゞャヌを怜蚎する堎合がありたす。 残念ながら、Wayland のレむテンシヌを枬定するこずはできたせんでした。私が䜿甚した Typometer プログラムは、Wayland が他のりィンドりをスパむするこずを防止するために䜜成されたものでした。 Wayland 合成のパフォヌマンスが X.org よりも優れおいるこずを願っおいたす。たた、将来的には誰かがこの環境でレむテンシヌを枬定する方法を芋぀けおくれるこずも願っおいたす。

出所 habr.com

コメントを远加したす