にulimitを設定しました/etc/security/limits.conf
。通常、ユーザーtestuser
(スリムlogin
管理者を使用)としてデスクトップ環境にログインすると、すべてがうまく機能します。
testuser
(別のセッションから別のユーザーへ)経由でユーザーとしてログインすると、Xephyr
ブラウザを除くすべてがうまく機能しますchromium
。私が経験しているエラーは次のとおりですdmesg
。
Chrome_ChildIOT (2472): VmData 4310827008 exceed data ulimit 4294967296. Update limits or use boot option ignore_rlimit_data.
Chromeは機能しません(起動しますが、ページが読み込まれるまで無制限に待ちます)。
chromium
正しい制限を除く他のプログラムはすべて設定されます。私はこれを使ってこれを確認しました:
find /proc/ -maxdepth 1 -user testuser -exec cat {}/limits \; | grep 'Max data size'
すべて無制限にPIDs
設定:Max data size
Max data size unlimited unlimited bytes
chromium
プロセスを除外:
Max data size 4294967296 4294967296 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
私は次のことを知りたいです:
1)なぜchromium
他のすべてのプログラムと異なる制限がありますか?
2) 「基本」の制限はどこから来るのか(4294967296
クロムはどこから制限をもたらしますか?)
3) pam を使用するかどうかにかかわらず、すべてのプロセスに対してこれらのデフォルト制限をグローバルに一度にどのように変更できますか?
答え1
- Chromiumに他のすべてのプログラムと異なる制限があるのはなぜですか?
Chromiumは単純なアプリケーションのように見えますが、そうではありません。最初はマルチスレッドが登場し、Chromiumにさまざまなタスク(拡張プログラム、タブ、コアWebエンジンなど)のために複数のプロセスを実行させ、仮想化が行われました。 Chromiumは多くのサンドボックスを使用して分離します。検索アクティビティにより、他のアプリケーションよりも多くのリソースが使用され、使用されるネットワーキングエンジンも軽量ではありません。実行に必要なさまざまな必須ライブラリやその他のリソースが多用されている機能を追加すると、..一部の関連ドキュメントを使用できます。ここ、 ここそしてこの記事役に立つ情報があります。
- 「基本」制限はどこから来たのですか(Chromiumの制限4294967296はどこから来たのですか?)
4294967296バイト(4096MBまたは4GBの制限)Chromiumは設計上4GBに制限されています。これはハードコードされており、これに関する詳細情報を確認できます。ここそしてここ
- pamを使用するかどうかにかかわらず、すべてのプロセスに対してこれらのデフォルト制限をまとめて一度に変更するにはどうすればよいですか?
簡単な作業ではありませんが、ほとんどの一般的なプロセスをうまく実行できます。現在、Chromeなどの複雑なプロセスでは、各「特殊」アプリケーション用のカスタム構成が必要です。
Chromeの場合、次のものがあります。コマンドパラメータ機能をカスタマイズ/有効化/無効化するために使用でき、その一部を使用してニーズに合わせてクロムを作成できます。以下はいくつかの興味深いスイッチです。
このスイッチは、次のコマンドラインで使用できます。/usr/bin/chromium --single-process
--single-process
--aggressive-tab-discard
--aggressive-cache-discard
--ui-compositor-memory-limit-when-visible-mb
--disk-cache-dir # Use a specific disk cache location, rather than one derived from the UserDatadir.
--disk-cache-size # Forces the maximum disk space to be used by the disk cache, in bytes.
--force-gpu-mem-available-mb # Sets the total amount of memory that may be allocated for GPU resources
--gpu-program-cache-size-kb # Sets the maximum size of the in-memory gpu program cache, in kb
--mem-pressure-system-reserved-kb # Some platforms typically have very little 'free' memory, but plenty is available in buffers+cached. For such platforms, configure this amount as the portion of buffers+cached memory that should be treated as unavailable. If this switch is not used, a simple pressure heuristic based purely on free memory will be used.
--renderer-process-limit # Overrides the default/calculated limit to the number of renderer processes. Very high values for this setting can lead to high memory/resource usage or instability.
ulimitを更新するスクリプトでchromiumを実行することもできます(4GB未満の値はブラウザと競合する可能性があります...)。
ulimit -Sv 4352000000 #4.2GB
/usr/bin/chromium
# or 0.42GB, it works but the browser may crash
#ulimit -Sv 435200000 #0.42GB
#/usr/bin/chromium
答え2
最新の64ビットシステムでは、VMスペースを制限する妥当な理由はありません。
VM空間は、物理メモリだけでなく、すべてのメモリをマッピングするために使用されます。現在のコンピューティングで大量の仮想マシンデータを最も一般的に使用するのはスパースバッファです。ファイルまたはデータベースの小さな部分だけが物理メモリに含まれ、データ全体が仮想メモリに含まれ、透過的にロードされるルーチンあります。必要に応じて。
物理データメモリの使用を制限したい場合でも、ulimitの代わりに/sysおよび/または/proc/sysの設定を使用してこれを行う必要があります。これは、プログラム信号のメモリ不足エラーが正しく発生するためです。鍛造。
正直なところ、ulimitはマルチユーザーシステムへのサービス拒否攻撃を防ぐことに加えて、実際には役に立たない汚れた古いハッキングです。
答え3
通常、テレビチャンネルをストリーミングするときにChromeを使用して同じ問題が発生しました。エラーメッセージに対する回答が提供されます。
ignore_rlimit_data
に追加するGRUB_CMDLINE_LINUX_DEFAULT入り、/etc/default/grub
grubを更新して再起動します。