特定のWebサイトを閲覧しているときに、Linuxが数分間反応しなくなる原因は何ですか?


28

Linux 4.15を使用していますが、Google、Facebook、または他のリソースを大量に消費するWebサイトを閲覧すると、OS全体が反応しなくなり、フリーズし、使い物になりません。動作していると思うのは、ディスク(ext4としてフォーマットされたメインシステムパーティション)だけです。

私は、むくみを取り除くために1分以上待つことを余儀なくされ、時には12分間反応しなくなるため、イライラします。OSがマルチタスクを適切に処理できないという事実は、まったく奇妙で受け入れられない動作を反映する傾向があります。

これは、Firefoxで発生しますが、とだけでなく、あらゆる含むジャバスクリプトインタプリタアプリケーションのMicrosoft VSCode角度-CLIng serveコマンド)と同様に実行する他のリソースを大量に消費するスレッド-などの場合とplantuml Aより非常に大きいグラフを生成するとき非常に複雑なUML図。

今日、少し移動するだけで最近不良USBポートからプラグを抜かれた(ext4パーティション上の)外部HDDのデータ回復ソフトウェアを起動した後、OSは完全に管理不能になります。

私はそのようなバグのある動作の背後にある根本原因を伝えることができません

ブラウザで多くのタブを開き、df出力ごとに94%のOSパーティションを使用しています:

Filesystem     1K-blocks      Used Available Use% Mounted on
udev             3964160         0   3964160   0% /dev
tmpfs             798164      3192    794972   1% /run
/dev/sda5      173466400 153224316  11407424  94% /
tmpfs            3990820     62936   3927884   2% /dev/shm
tmpfs               5120         4      5116   1% /run/lock
tmpfs            3990820         0   3990820   0% /sys/fs/cgroup
/dev/loop5           128       128         0 100% /snap/anbox-installer/24
/dev/loop2           128       128         0 100% /snap/anbox-installer/17
/dev/loop4        223616    223616         0 100% /snap/kde-frameworks-5/26
/dev/loop3         90624     90624         0 100% /snap/core/7169
/dev/loop7        223616    223616         0 100% /snap/kde-frameworks-5/25
/dev/loop8         90624     90624         0 100% /snap/core/7270
/dev/loop0         87552     87552         0 100% /snap/qownnotes/2160
/dev/loop1        241664    241664         0 100% /snap/kde-frameworks-5/27
tmpfs             798164         0    798164   0% /run/user/0
tmpfs             798164        32    798132   1% /run/user/1000
/dev/loop9         87552     87552         0 100% /snap/qownnotes/2176
/dev/sda3      188669948 187132488   1537460 100% /media/kais/DATA
/dev/sdb1       15142960   2091904  13051056  14% /media/kais/STORE N GO

ハードウェアとして、私は使用しています:

  1. Intel Core i3 v2348Mによるとlscpu

    Architecture:        x86_64
    CPU op-mode(s):      32-bit, 64-bit
    Byte Order:          Little Endian
    Address sizes:       36 bits physical, 48 bits virtual
    CPU(s):              4
    On-line CPU(s) list: 0-3
    Thread(s) per core:  2
    Core(s) per socket:  2
    Socket(s):           1
    NUMA node(s):        1
    Vendor ID:           GenuineIntel
    CPU family:          6
    Model:               42
    Model name:          Intel(R) Core(TM) i3-2348M CPU @ 2.30GHz
    Stepping:            7
    CPU MHz:             905.312
    CPU max MHz:         2300.0000
    CPU min MHz:         800.0000
    BogoMIPS:            4589.49
    Virtualization:      VT-x
    L1d cache:           32K
    L1i cache:           32K
    L2 cache:            256K
    L3 cache:            3072K
    NUMA node0 CPU(s):   0-3
    Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave avx lahf_lm epb pti tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm arat pln pts
    
  2. 8 GBのRAM。(htop以下の出力を参照してください)。

  3. メインボードバス速度の99.83 MHz
  4. 500 GB内蔵HDD-これは、オペレーティングシステムからのSMARTレポートです。

    smartctl 6.6 2017-11-05 r4594 [x86_64-linux-4.15.0-33-generic] (local build)
    Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org
    
    === START OF INFORMATION SECTION ===
    Model Family:     Western Digital Blue Mobile
    Device Model:     WDC WD5000LPVX-22V0TT0
    Serial Number:    WD-WXE1E13AAMR4
    LU WWN Device Id: 5 0014ee 25db04ba7
    Firmware Version: 01.01A01
    User Capacity:    500,107,862,016 bytes [500 GB]
    Sector Sizes:     512 bytes logical, 4096 bytes physical
    Rotation Rate:    5400 rpm
    Device is:        In smartctl database [for details use: -P show]
    ATA Version is:   ACS-2 (minor revision not indicated)
    SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 6.0 Gb/s)
    Local Time is:    Wed Aug  7 15:52:05 2019 CET
    SMART support is: Available - device has SMART capability.
    SMART support is: Enabled
    
    === START OF READ SMART DATA SECTION ===
    SMART overall-health self-assessment test result: PASSED
    
    General SMART Values:
    Offline data collection status:  (0x00) Offline data collection activity
                        was never started.
                        Auto Offline Data Collection: Disabled.
    Self-test execution status:      (   0) The previous self-test routine completed
                        without error or no self-test has ever 
                        been run.
    Total time to complete Offline 
    data collection:        ( 8040) seconds.
    Offline data collection
    capabilities:            (0x7b) SMART execute Offline immediate.
                        Auto Offline data collection on/off support.
                        Suspend Offline collection upon new
                        command.
                        Offline surface scan supported.
                        Self-test supported.
                        Conveyance Self-test supported.
                        Selective Self-test supported.
    SMART capabilities:            (0x0003) Saves SMART data before entering
                        power-saving mode.
                        Supports SMART auto save timer.
    Error logging capability:        (0x01) Error logging supported.
                        General Purpose Logging supported.
    Short self-test routine 
    recommended polling time:    (   2) minutes.
    Extended self-test routine
    recommended polling time:    (  93) minutes.
    Conveyance self-test routine
    recommended polling time:    (   5) minutes.
    SCT capabilities:          (0x7035) SCT Status supported.
                        SCT Feature Control supported.
                        SCT Data Table supported.
    
    SMART Attributes Data Structure revision number: 16
    Vendor Specific SMART Attributes with Thresholds:
    ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
      1 Raw_Read_Error_Rate     0x002f   200   200   051    Pre-fail  Always       -       1
      3 Spin_Up_Time            0x0027   149   143   021    Pre-fail  Always       -       1541
      4 Start_Stop_Count        0x0032   057   057   000    Old_age   Always       -       43173
      5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
      7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always       -       0
      9 Power_On_Hours          0x0032   083   083   000    Old_age   Always       -       12797
     10 Spin_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
     11 Calibration_Retry_Count 0x0032   100   100   000    Old_age   Always       -       0
     12 Power_Cycle_Count       0x0032   091   091   000    Old_age   Always       -       9496
    191 G-Sense_Error_Rate      0x0032   001   001   000    Old_age   Always       -       250
    192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       399
    193 Load_Cycle_Count        0x0032   147   147   000    Old_age   Always       -       160989
    194 Temperature_Celsius     0x0022   101   092   000    Old_age   Always       -       42
    196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
    197 Current_Pending_Sector  0x0032   200   200   000    Old_age   Always       -       0
    198 Offline_Uncorrectable   0x0030   100   253   000    Old_age   Offline      -       0
    199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
    200 Multi_Zone_Error_Rate   0x0008   100   253   000    Old_age   Offline      -       0
    
    SMART Error Log Version: 1
    No Errors Logged
    
    SMART Self-test log structure revision number 1
    No self-tests have been logged.  [To run self-tests, use: smartctl -t]
    
    SMART Selective self-test log data structure revision number 1
     SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
        1        0        0  Not_testing
        2        0        0  Not_testing
        3        0        0  Not_testing
        4        0        0  Not_testing
        5        0        0  Not_testing
    Selective self-test flags (0x0):
      After scanning selected spans, do NOT read-scan remainder of disk.
    If Selective self-test is pending on power-up, resume after 0 minute delay.
    

以下は、リソース使用量の結果ですhtop

  1  [|||||                    14.1%]   Tasks: 286, 1497 thr; 2 running
  2  [|||||                    13.2%]   Load average: 3.00 4.97 6.09 
  3  [|||||                    12.5%]   Uptime: 3 days, 16:12:35
  4  [|||                       9.3%]
  Mem[|||||||||||||||||||5.09G/7.61G]
  Swp[|||||||||||||||||||3.68G/4.65G]

  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
 7006 jvb        20   0 6640M  102M  6780 S  5.3  1.3 18:53.18 java -Xmx3072m -X
 8224 kais     20   0 4537M  771M  200M S  6.6  9.9  2h31:23 /usr/lib/firefox/
 2299 kais     20   0 2958M  184M 42912 S  5.3  2.4 13:54.41 /usr/lib/firefox/
 1216 root       20   0  519M  120M 94640 S  5.3  1.5  1h52:50 /usr/lib/xorg/Xor
28401 kais     20   0 3354M  584M  107M S  7.9  7.5 34:44.51 /usr/lib/firefox/
 8439 kais     20   0 4537M  771M  200M S  4.6  9.9 37:06.21 /usr/lib/firefox/
 8831 kais     20   0 3222M  351M 64828 R  4.0  4.5 11:19.87 /usr/lib/firefox/
 7025 jvb        20   0 6640M  102M  6780 S  0.0  1.3  0:18.34 java -Xmx3072m -X
 7027 jvb        20   0 6640M  102M  6780 S  0.0  1.3  0:18.05 java -Xmx3072m -X
 5901 kais     20   0  7492  5612  2904 R  4.0  0.1  0:00.66 htop
 5329 kais     20   0  547M 47456 38388 S  1.3  0.6  0:01.29 /usr/lib/gnome-te
13540 kais     20   0 2958M  184M 42912 S  2.0  2.4  0:06.25 /usr/lib/firefox/
16897 kais     20   0  904M 28292 18076 S  2.0  0.4 50:08.37 pavucontrol
17999 kais     20   0 2424M 29460 25380 S  1.3  0.4 52:41.73 /usr/bin/pulseaud
F1 Help  F2 Setup  F3 Search  F4 Filter  F5 Tree  F6 SortBy F7 Nice  -  F8 Nice  +  F9 Kill  F10 Quit

これらは、コマンドによって生成されたVM統計の結果でもありますvmstat 5

私の知る限り、ブロートウェアはOSを無反応にすべきではないので、OSジョブがプロセスを分離し、マルチタスクを保証しているため、ブロートウェアが問題の根本的な原因であるとは考えません。

この問題がOS固有か、ハードウェア固有か、構成固有かはわかりません。

何か案は?


4
コメントは詳細なディスカッション用ではありません。この会話はチャットに移動さました。コメント/チャットの結果の説明については、必要に応じて質問を更新してください。ありがとうございました!
ジェフシャラー

3
システムが頻繁にスワップしていると思われます。vmstat 5システムが動作している間に実行できますか?事前にvmstatを起動し、フリーズ中に出力される行を投稿しても構いません。システムが実際にスワップしている量を示す列siso列を特に探しています。また、topメモリ使用量でソートされた(shift-M)の出力を投稿できますか?(または同等のhtopモードが何であれ)
marcelm

1
ファイルシステムがほぼいっぱいになると、非常に遅くなる可能性があります。これがext4に当てはまるかどうかはわかりません。
誰も

1
@Kais両方試して、何が機能するのか見てみましょう。スワップは、準備したものの最大半分まで満たされ、フリーズすることはありません。スワップの使用によるスローダウンを経験するかどうかは、私が考える使用パターンにも依存するため、私たちの経験は異なる場合があります。
JoL

2
スワップを完全に無効にしてみてください-これは、ディスクスラッシングを問題の原因として確認または排除します。スワッピングのポイントは、未使用のページをディスクに置くことですが、ほとんどのページが実際に使用されている場合、スワッピングは役に立ちません。典型的なワークロードに10GBの常駐ページが必要な場合、8GBのマシンは苦労します。リソースの枯渇に対する答えは、ワークロードを下げるか、リソースを増やすことです(この場合、クロムを試すか、物理メモリを追加します)。
ベイン

回答:


27

Linuxがそれほど反応しなくなる原因は何ですか?

大量のスワッピングを引き起こす使用可能なRAMをオーバーコミットすると、間違いなくこれを行うことができます。メカニカルHDDのランダムアクセスI / Oでは、読み取り/書き込みヘッドを移動する必要があり、1秒あたり約100シークしか実行できないことに注意してください。

LinuxがRAMを "多すぎる"オーバーコミットすると、通常は完全に昼食に出かけます。スピニーディスクと8GB RAMもあります。いくつかのソフトウェアでメモリリークの問題が発生しました。つまり、メモリ使用量は時間の経過とともに増加し続け、縮小することはありません。したがって、それを制御する唯一の方法は、ソフトウェアを停止してから再起動することでした。この間に経験したことから、3GB以上のスワップを生成している場合、10分間に遅延が発生することはそれほど驚くことではありません。

3GBを超えるスワップがあるすべてのケースで、必ずしもこれが表示されるとは限りません。理論は、重要な概念はスラッシングであると言います。一方、2つの異なるワーキングセットを切り替えようとしており、3 GBの入出力を交換する必要がある場合、100 MB /秒では、I / Oパターンが完全に最適化されていても少なくとも60秒かかります。実際には、I / Oパターンは最適にはほど遠いでしょう。

これで問題が発生した後、スワップスペースを2GB(以前よりも数倍小さいサイズ)に再フォーマットしたため、システムはそれほど深くスワップできなくなりました。mkswapオプションのサイズパラメータを使用するため、パーティションのサイズ変更をいじることなくこれを行うことができます。

大まかなバランスは、メモリが不足してプロセスが強制終了されることと、システムを長時間ハングさせて、とにかくあきらめて再起動することです。4GBのスワップパーティションが大きすぎるかどうかはわかりません。それはあなたが何をしているかに依存するかもしれません。重要なことは、ディスクがチャーンを開始するタイミングに注意し、メモリ使用量を確認し、それに応じて応答することです。

マルチプロセスアプリケーションのメモリ使用量を確認することは困難です。ダブルカウントの共有メモリのないプロセスごとのメモリ使用量を表示するには、使用することができsudo atop -R、プレスM及びmPSIZE列で、ルックを。を使用することもできますsmemsmem -t -P firefoxすべてのFirefoxプロセスのPSSが表示され、続いて合計PSSの行が表示されます。これは、FirefoxまたはChromeベースのブラウザーの合計メモリ使用量を測定するための正しいアプローチです。(メモリ使用量を表示するためのブラウザ固有の機能もありますが、個々のタブが表示されます)。


1
コメントは詳細なディスカッション用ではありません。この会話はチャットに移動さました
ジェフシャラー

ulimitプロセスの使用を制御するための使用を検討する価値があるかもしれません(マルチプロセスアプリケーションでは扱いにくいですが、役に立つかもしれません)。
トビースパイト

2
@TobySpeightは、アプリのメモリ使用量を制限する場合、cgroupを使用する必要があります。ulimit本当に助けにはなりません。
sourcejedi

はい、それはおそらくより良い選択です。とにかく、答えで言及する価値があります。
トビースパイト

2
The important thing is to watch out for when the disk starts churning, check your memory usage, and respond accordingly.<-または、GUIを使用している場合は、単純なスクリプトを実行するcrontabを作成し(毎分程度)、残りの空きRAMをチェックして警告します。Linux Mint用に自分で作成し、そこから多くのことを学びました。それはあなたが試してみて、試すことができるものです。
イスマエルミゲル

5

私の知る限り、ブロートウェアはOSを無反応にするべきではないので、ブロートウェアが問題の根本原因であるとは考えず、受け入れさえしません。

あなたはこれを好まないだろう、ブロートウェアあなたの問題だと思う(それが問題なのはメモリなのかディスクなのかわからないが)。残念ながら、Linuxカーネルは高いメモリ圧迫状況の処理に非常に優れており、基本的にメモリが使い果たされると再起動が必要になることが知られています。あなたの問題がリソースの枯渇であると私を信じさせる3つのことがあります:

  1. ルート(/)およびDATAのディスク容量がほぼいっぱいです。DATAを何に使用するのかわかりませんが、ルートパーティションのサイズを小さくしすぎるとシステムが動作しなくなるという問題に遭遇しました。
  2. メモリの負荷が高いため、RAMがほぼいっぱいです。RAMがいっぱいになると、ページフォールトが発生し始めます。ページフォールトは、カーネルがプロセスに十分なメモリを割り当てることができず、代わりにシステムのかなり遅いスワップスペースを使用する必要がある場合に発生します。これにより、最後の観察結果が得られます。
  3. スワップ領域がほぼ一杯です。RAMとスワップの両方がほぼいっぱいになっているため、システムに明らかに高いメモリ負荷がかかっています。

基本的に、これら3つを組み合わせると、システムには何でもできる十分なリソースがありません。残念ながら、Linuxがメモリ不足の状況をうまく処理できないのは残念です(たとえば、WindowsのNTカーネルと比較して)が、そのように見えます。詳細については、このRedditスレッドとそのリンクされたメーリングリストを参照してください。

状況を修正する方法については、スワップサイズを増やすことをお勧めしますが、ディスクスペースが不足しているため問題になります。Minecraftサーバーに大量の人がいない限り、メモリを約1024mに減らすことは安全だと思います(個人的には1024mを約10人で使用しており、正常に動作します)。また、Minecraftサーバーのパフォーマンスが向上する傾向があるため、Minecraftサーバーには栓または紙を使用します。

がんばろう!


7
問題はディスクではなく、明らかにメモリです。Linuxが高いメモリ負荷の下で悪いのは事実です。しかし、再起動が必要であることは事実ではありません。いくらかのメモリを解放すると、Linuxはメモリのプレッシャーが利用可能な容量を超える前と同じように反応するようになります。
ジル「SO-悪であるのをやめる」

1
@Kaisスワップスペースについて話していたので、これがセグエとして「これが最後の観察につながる」と言い、ポイント3でそれについて話し続けます。Minecraftについては、Minecraftサーバーを実行していて、 3GのRAM。たくさんの人が同時にプレイしない限り、それほど多くのRAMは必要ないかもしれないと言っていました。私は、紙とスピゴットについて話すとき、「彼らはよりパフォーマンスが高い傾向がある」と言った。
追跡

2
一般的にスワップを使用するのは悪い考えだと聞いたことがありますか?少なくともサーバー環境で、12分間の凍結が許容されない場合
9ilsdx 9rvj 0lo

2
@Kais、私の経験では、Windowsは非GUIプログラムでさらに悪化しますが、メモリプレッシャーが高い場合は非フォアグラウンドのGUIプログラムを一時停止し、デスクトップアプリケーションにバックグラウンドがないという仮定の下でデスクトップの問題を解決しますタスク。
サイモンリヒター

2
多分バニラマインクラフト。しかし、大きなmodpackはプレイヤーが参加する前に3 GiBに簡単に到達します:)
Luaan

4

の出力はfree -m何ですか?使用中のRAMの量は、使用量がわからなければ意味がありません。それと、使用されているスワップスペースの量を知りたいと思っています。

しかし、あなたはあなた自身の質問に答えたと思います。ブラウザで「多くのタブ」を開いておくと、それらを閉じないでいるとシステムが確実に遅くなります。システムがフリーズした場合、一度にいくつ開いていますか?

また、「非常に複雑なUML図から非常に大きなグラフを生成する」など、メモリを集中的に使用する他のタスクからシステムがフリーズする場合にも意味があります。グラフを生成する際にシステムの速度が低下するため、驚くことはほとんどありません。

これがあなたのシステムが振る舞うべき方法であるように本当に聞こえます。それか、私はここで何かを見逃しています。

ちなみに、HDDの統計値は、ほとんどの場合メモリ不足が原因であるため、システムが応答しなくなるという問題には関係ありません。


1
「それはあなたのシステムを絶対に遅くします」-はい、これは予想されますが、制御不能なXセッションを引き起こすことは予想されません(つまり、フリーズされたシステムの結果)。
カイス

1
それは実際に予想されることであり、あなたが説明している動作は、システムであまりにも多くのRAMを使用したときに起こることです。テキストベースの端末に切り替えることができなくなるまでシステムが詰まってしまい、RAMが2倍になりました。Xセッションを使用できない状況に陥った場合は、テキストベースの端末に切り替えて、問題のあるプロセスを強制終了する必要があります。それが失敗した場合は、ハードリブートを行う必要があります。私はあなたに伝えることができる最高の試合。
ザックサンチェス

1
@Kais macOSは、メモリ不足の状況でも動作が遅くなります。システムがRAMに絶対に必要なメモリを賢明に決定する方法は本当にないので、アプリケーションを切り替えると、UIが応答しなくなるまで、狂ったようにスワップインおよびスワップアウトします。
クサラナンダ

5
ええと、「ウィンドウマネージャー」のUIの応答性を維持するための効果的な方法がないということではありません。MSの研究は、デマンドページングを禁止する設計に関する実験的なOS全体を作成しました。概念実証:Midoriで「ウィンドウマネージャー」を実行し、スワップなどのLinuxアプリをエミュレートします。そこに行くと、アプリがスワップしている場合でも、「ウィンドウマネージャ」は応答性を維持します。最低でも、一部のアプリを確実に強制終了してメモリを解放できます。Linuxは完璧ではありません。GnomeをX11からWaylandに切り替えると、過負荷のシステムでの応答が著しく悪くなります。
sourcejedi

2
HDDの状態は重要です。応答しない原因として考えられるのは、ディスクの障害です。これにより、大量のI / Oバックログが発生します。しかし、私はこのケースでそれが起こっているという証拠を見ていません。
200_success

4

タイトルを読んだとき、私がLinuxでこの問題を正確に経験したので、私はすぐに「RAMが足りない」と考えました。私は同意します、それは悲惨であり、改善が必要です。Windowsはこの状況をより良く処理します。

いくつかの提案:

  • メモリモニタアプレットをシステムトレイに追加して、監視できるようにします。
  • Firefoxの設定で、「コンテンツプロセスの制限」を「1」に設定します。設定の下のテキストにあるように、「追加のコンテンツプロセスは、複数のタブを使用するときのパフォーマンスを改善できますが、より多くのメモリを使用します。」
  • メモリを消費するブラウザアドオンを削除または交換します。広告はどのブロッカーよりも多くのメモリを消費するため、広告ブロッカーを維持してください。
  • 他のメモリを消費するプログラムを調査し、場合によっては削除します。

ただし、唯一の真の解決策は、RAMを追加購入することです。

大量のRAMがこの大惨事の発生を防ぐだけでなく、システムがRAMに大きなファイルキャッシュを構築することを可能にします。これは、システムが限界に近づいて実行されるため、現在実行できません。大きなファイルキャッシュは、HDDから作業を奪い、システム上のほぼすべてのアクションを一般的に速く感じさせます。価値がある。


素晴らしい答え、どうもありがとう。しかし、「追加のコンテンツプロセスは、複数のタブを使用する場合のパフォーマンスを改善できますが、より多くのメモリを使用します。」-正しく理解できれば、Firefoxはデフォルト設定ごとにタブごとに最大8つのプロセスを開くことができますか?
カイス

1
@Kaisタブごとに1つのプロセスだと思います。いずれにせよ、制限を1に設定すると、すべてのタブで合計1プロセスになり、メモリの使用量が少なくなります。
Boann

わかりました、ありがとう。
カイス

4

htop出力は、RAMの必要量がその容量(合計RAM + SWAP)よりも大きいことを示しています。したがって、最初に考慮すべき明らかな考慮事項は、RAMの使用量を減らすか、RAMの可用性を高めることです。

現代のFirefoxバージョンは、ウィンドウ/タブにプロセスとメモリスペースが与えられる方法のため、非常にリソースを消費することに注意してください。アイデアは、ブラウザ全体がひざまずくタブをクラッシュさせることを避けることでした。価格の価値はありますか?誰がわかるか...とにかく、私のPentium 4メインボードは2GBのRAMしかサポートしていないので、上記のために同様の問題がありました。メモリ不足によるクラッシュの可能性を回避するために、予備のSSDに〜800Mのスワップスペースを追加しました。swappinessと呼ばれる設定を変更することにより、カーネルがメモリページをどれだけ熱心にスワップするかを決定することで、これを実現しました。次のような便利なコマンドがいくつかあります。

現在のスワップ性を確認します。 cat /proc/sys/vm/swappiness

これにより、約60の結果が得られる可能性があります。これは、負荷の低いシステムで最大のパフォーマンスを得るには非常に高い値です。あなたにとっては、明らかにこれは逆効果ですのでsysctl vm.swappiness=1、システムの実行中に設定を変更するなどのコマンドを使用して設定を変更できます。

これらの変更を保存するには、ファイルを探す必要があります/etc/sysctl.conf。そのファイルで、値を変更するか、行を追加しますvm.swappiness=1

念のため、これはあなたの場合の解決策ではありませんが、有用な回避策を作成する必要があります。

クレジット https://askubuntu.com/questions/103915/how-do-i-configure-swappiness

上記の回答のソースには、詳細な説明が含まれています。私の場合、その投稿はとても役に立ちました。


ご返信ありがとうございます。これは、VM構成の推奨事項と思われます。
カイス

2

問題の原因、継続、拡大についての優れた議論。初期のコンピューターの設計でハードウェアを投げたり、既存の実装をアップグレードしたりすることで、経験するような問題を先取りしたいと思います。あなたはできる、

  • RAMを追加します(32GBは多くのセットアップに最適です)

  • ハードディスクドライブをSSDに交換します

  • スワップドライブにSSD(ソリッドステートドライブ)を追加します

  • RAM(32 GB以上のRAM)にスワップパーティションを作成します

  • より高速なHDDを取得

  • より高速な処理とより広い/より高速なバスアーキテクチャを備えたシステムに移行する

これらのハードウェアのアップグレード/交換の一部は、100米ドルをはるかに下回る場合があります。これらはLinux固有のものでも、ソフトウェアの実装そのものでもありませんが、使用しているハードウェアはタスクに適していません。


1
ハードウェア交換の推奨事項を指摘してくれてありがとう。
カイス

1
私はそれが役立つことを願っています。どのタイプのコンピューターまたは特定の機器がわからないので、これらは一般的な手順であり、改善される可能性が最も高いです。キャッシュまたはスワップのスラッシングが原因である可能性が高い特定の速度低下のいずれかまたはすべてが助けになり、一般的にディスクの読み取り/書き込みが速くなります
Old Uncle Ho

6
それらのほとんどは良い提案ですが、RAM への圧縮スワップにzramまたはzswapを使用していない限り、RAMへのスワップは基本的には役に立ちません-それらは価値がありますが、圧縮されていないramdiskへのスワップはちょうどそれと同じくらいのRAMプレッシャーを作成します(実際には、オーバーヘッドのためにわずかに増えています
CASの

高いRAM /低いCPUのワークロードでは素晴らしいアイデアのように思える圧縮の場合を除いて、なぜ誰かがRAMにスワップするのか分かりません。
ピーター-モニカを

1
@bain:ページをRAMにスワップアウトするのと、まだマップしておくのとではどう違いますか?圧縮を使用しない限り、物理RAMのページを使用しています。 それが価値のある場所です。唯一の違いは、ブックキーピングが多いことですが、ハードウェアページテーブルがよりきれいになる可能性があります。起動時にのみ影響を受ける関数/データなど、基本的にマップ解除を無視する起動専用メモリの場合、DRAMスペースを消費しないため、ディスクへのスワップの方が優れています。対話的に使用されないバックグラウンドデーモンの場合、待ち時間は重要ではないため、ディスクスワップが優先されます。
ピーターコーデス

2

通常、使用できなくなるのは「単なる」X11です。キーボードからプログラムへのキーストロークを取得し、画面上に何かを表示させるには、いくつかの異なるプロセスのコードを実行する必要があります。(Xサーバーはカーネルからキーストロークを取得し、xtermまたは同等のイベントを取得して何かを描画することを決定し、Xサーバーにメッセージを送信してフォントからグリフを描画します。)

Javascriptが大量に含まれるページを表示するWebブラウザーでウィンドウ上でマウスを動かすと、一連のプロセスに対するメッセージが大量に発生する可能性があり、そのすべてがそれらのプロセスを起動して大量のデータに触れます。おそらく「キャッシュされた」非圧縮ビットマップの束を含むでしょう。そのため、これはすぐに必要なものを追い出す可能性が高いです。

ctrl + alt + F2を使用して別の仮想コンソールに切り替えると、通常、何かがスワップスラッシングを引き起こしている場合に、わずか数秒の待ち時間でログインしてシェルコマンドを実行できます。 それはただbashです。Linuxカーネルはスワップ可能ではなく、すべてのVTおよび
keyboard <-> TTYコードが含まれています。


本当にスラッシングしていないときにスローダウンを回避するには、「スワッピング」を減らすことが役立ちます。たとえば、デスクトップで16GBのRAMとNVMe SSD上の2GBのスワップパーティションを使用して/proc/sys/vm/swappiness調整パラメータを設定し6ます。(サーバーのスループットではなく)対話型の待機時間の調整について詳しく読むことができます。すべてのガイドがその調整可能パラメータについて言及します。

しかし、スワップがまったくある場合、LinuxはOOMキラーを呼び出す前にスワップを使用します。 スワップパーティションを小さくし、Linuxが長い間使用されない本当に古くなったがらくたをページアウトするのに十分な大きさにしてください。(たとえば、メモリリーク!)

スワップがいっぱいになったので問題はありませんでした。現代のLinuxでは、限られたスワップスペースをうまく扱うことができます。Chromium(私はfirefoxの代わりに使用します)は、何十ものStack Overflowタブが開いていると時々遅くなりますが、The Great Suspenderは、使用していないタブをアンロードするための素晴らしいアドオンです。テキストボックスに何も入力していないタブのみをアンロードしますが、これによりかなりのRAMが節約されると思います。Firefoxでも使用できる場合があります。


他の人が示唆しているように、16GBのRAMはLinuxでのインタラクティブな使用に本当に適しています。 DRAMの価格は現在比較的低いです。約1.5年前に急上昇した後、彼らは大抵再び減少しました。


素晴らしい回答、ありがとう。しかし、「大量のJavascriptがらくたは、多数のプロセスに大量のメッセージをもたらす可能性があり、そのすべてがそれらのプロセスを起動し、大量のデータに触れさせる」-これらのプロセスは、Firefoxなのだろうか子プロセス?
カイス

@Kais:ウィンドウマネージャー、Webブラウザー、Xサーバー、さらに複雑なデスクトップ内の他のさまざまなXクライアント。また、マウスが波打つウィンドウを持つ他のプロセス(その文章を書いたときに考えていたものです)。たとえば、KDEでは、タスクバーはウィンドウマネージャーとは別のプロセス(plasmakwinです。
ピーターコーデス

私はLXDEを使用しているので、私の場合、OpenboxとXOrgサーバーのみが起動するプロセスですか?また、それらに渡されるメッセージの種類は何ですか?
カイス

@Kais:UNIXドメインソケットを介したX11プロトコルメッセージ。しばらく実行xevして、マウスを動かしたときにどのようなメッセージが表示されるかを確認してください。またstrace xev、クライアント側に関係するシステムコールを確認してください。
ピーターコーデス

なるほど。xevコマンドを実行すると、別のウィンドウに切り替えてクリックするだけでメッセージが表示されますが、マウスの上に移動しただけではメッセージは表示されません。
カイス

-2

特定のWebサイトを閲覧しているときに、Linuxが数分間反応しなくなる原因は何ですか?

Linuxを正しく使用していません。これは、リソースが限られたマシンで特に顕著になります。より多くのRAMやより高速なプロセッサは必要ありません。

バックグラウンド:

Almost every non-user program’s priority is 0.
Almost every user program’s priority is 20.

問題を「修正」するには:

ユーザー以外のプログラムはそのままにしておきますが、ユーザープログラムが問題を引き起こさないように、ユーザープログラムの優先順位(適切なレベル)の変更を開始します。プログラムを起動するものを編集して、通常は問題ではないものから最悪の犯罪者まで、素敵なレベルを含めます。

実世界の例:

KMail:          nice -n 1 kmail -caption "%c" %i %m
LibreOffice:    nice -n 2 libreoffice --writer %U
Firefox:        nice -n 3 firefox %u
WorstOffender:  nice -n 9 {i'm a bad program}

WorstOffenderは数分間反応しなくなります。これは文字通り、より良いボックスの問題を購入するものですが、OS(Linux)全体や実行中の他のすべてが反応しなくなることはありません。


2
私は、Linuxの両方のサーバーの多くで、私自身のワークステーション(多くの場合には非常に限らVMのセットアップ)に何十年も働いてきた、としているかつてないでRAM関連のパフォーマンスの問題を解決しなければなりませんでしたnice -n。「これ以上RAMは必要ありません」-彼は確かにより多くのRAMを必要とします。またはulimit、最悪の犯罪者をハード制限して、既存のRAMが再び十分になるように使用できます。「あなたはLinuxを正しく使用していません。」完全にオフです。
AnoE

そして、私は最後の22年間、リソース制限されたハードウェア上のLinuxのGUIのインストールと協力し、「素敵」維持解決するために作品をINGのき「分間Linuxは応答しない。」
マイケル・

私はそれが機能することを否定しません。Linuxと連携する「正しい」方法としてそれを提案するのは最良のことではないかもしれないと言っているだけです。
AnoE
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.