Bashで.bashrcと起動スクリプトが消費するメモリの量を確認する方法はありますか?

Bashで.bashrcと起動スクリプトが消費するメモリの量を確認する方法はありますか?

Bashでは、.bashrcシェルの起動時に(他のさまざまなスクリプトも含む)メモリにロードできます。長さは10行にすることができますが、数千行ではなくても数百行にすることもできます。各エクスポートは少量のメモリを消費し、各関数と各エイリアスにもメモリに保持される少量のリソースが必要です。別の考慮事項は、他のスクリプトのサイズだけを見ることができないことです。他のスクリプトには、.bashrcメモリを消費しない多くのコメントがある可能性があるためです。

すべての起動スクリプトを削除し、システムを起動し、問題が解決するまで数分待ってから、いくつかの種類の基準を設定してから起動スクリプトを再挿入し、システムを再起動して同じ練習を実行していくつかを取得しようとしています。一種のリソース/パフォーマンスの違いです。

これを決定するのに役立つツールを提案できますか?私は、多くの関数とエイリアスを定義する約15,000個の比較的大きな起動スクリプトセットを持っているので、16GB RAMと高速で最新のシステムを備えた最新のシステムとして、その影響がある場合は本当に疑問に思います。 Core i5、効果は微妙に思える)システムが消費するリソースにどのような影響を与えますか?起動スクリプトの影響が少なくても、まだ基準をとり、「負荷テスト」を実行して、システムが特定のアプリケーションセットの実行をどのように処理するかを評価できるようにしたいと思います。

ベストアンサー1

起動スクリプトと最終設定の影響は主にインタラクティブシェルに影響し、最終的なリソース消費を決定するために努力する必要はありません。デフォルトシェルがデフォルト設定で始まるようにターミナルウィンドウを開き、起動スクリプトをロードせずにシェルを起動し、そのシェルで実行しますps -F

$ bash --norc
$ ps -F
UID          PID    PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
steve    3922819 3921628  0  2307  4812   7 20:49 pts/14   00:00:00 bash
steve    3922883 3922819  0  2276  4688   5 20:49 pts/14   00:00:00 bash --norc
steve    3922884 3922883  0  2892  4244   0 20:49 pts/14   00:00:00 ps -F

この列を見ると、RSS私の bash 設定 (非常に小さい) が単純な bash より 124KiB を多く使うことがわかります。

私のZsh設定はもっと複雑です。

$ zsh -f
$ ps -F
UID          PID    PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
steve    3921244   18008  0  3341  8296   2 20:43 pts/14   00:00:00 zsh
steve    3921628 3921244  0  2829  5856   5 20:44 pts/14   00:00:00 zsh -f
steve    3923250 3922883  0  2892  4132   7 20:51 pts/14   00:00:00 ps -F

違いは2440KiBと大きくなります。

非対話型シェルは同じ起動スクリプトをロードせず、とにかく持続しません。 etc.を実行すると、スクリプトがあまりないことがわかりますps -FC shps -FC bash

環境にロードする内容が大きな影響を与える可能性があります。これを理解するには、次の実際のサイズを見てください/proc/.../environ

$ sudo wc -c /proc/*/environ | tail -n 1
758799 total

合計741KiBで、ほぼ1,000の実行中のプロセスに対応できます。

おすすめ記事