Was kann dazu führen, dass Linux beim Surfen auf bestimmten Websites für Minuten nicht mehr reagiert?

28

Ich verwende Linux 4.15 und dies passiert mir oft, wenn ich auf Google, Facebook oder einer anderen ressourcenhungrigen Website surfe. Das gesamte Betriebssystem reagiert nicht mehr, ist eingefroren und unbrauchbar. Das einzige, was ich sehe, dass es funktioniert, ist die Festplatte (Hauptsystempartition formatiert als ext4), die massiv genutzt wird (E / A-Drosselung).

Ich werde gezwungen, eine Minute oder länger zu warten, um das Aufblähen loszuwerden, manchmal reagiert es zwölf Minuten lang nicht und daher bin ich frustriert. Die Tatsache, dass das Betriebssystem Multitasking nicht gut handhaben kann, spiegelt in der Regel ein absolut seltsames und inakzeptables Verhalten wider.

Dies ist nicht nur bei Firefox der Fall , sondern auch bei jeder Javascript-Interpreter-Anwendung, einschließlich Microsoft VSCode oder Angular -Cli ( ng serveBefehl) sowie jedem anderen ressourcenintensiven Ausführungsthread - wie zum Beispiel plantuml beim Generieren eines sehr großen Diagramms aus a sehr komplexes UML-Diagramm.

Heutzutage wird das Betriebssystem völlig unhandlich, nachdem eine Datenwiederherstellungssoftware für eine externe Festplatte (über eine ext4-Partition) gestartet wurde, die in letzter Zeit nach und nach von einem fehlerhaften USB-Anschluss getrennt wurde.

Ich bin nicht in der Lage, die Ursache für ein derart fehlerhaftes Verhalten zu ermitteln

Ich habe viele Registerkarten im Browser geöffnet und 94% der Betriebssystempartitionsauslastung laut dfAusgabe:

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

Als Hardware verwende ich:

  1. Intel Core i3 v2348M nach 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. (Siehe htopAusgabe unten).

  3. 99,83 MHz Mainboard-Busgeschwindigkeit
  4. 500 GB interne Festplatte - Dies ist der SMART-Bericht des Betriebssystems:

    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.
    

Dies sind die Ergebnisse der Ressourcennutzung pro 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

Dies sind auch die Ergebnisse der VM-Statistiken, die vom Befehl generiert wurden vmstat 5.

AFAIK, Bloatware sollte nicht dazu führen, dass das Betriebssystem nicht mehr reagiert. Daher würde ich nicht in Betracht ziehen oder sogar akzeptieren, dass Bloatware die Hauptursache für das Problem ist, da das Betriebssystem Prozesse isoliert und Multitasking gewährleistet.

Ich weiß nicht, ob dieses Problem betriebssystemspezifisch, hardwarespezifisch oder konfigurationsspezifisch ist.

Irgendwelche Ideen?

Kais
quelle
4
Kommentare sind nicht für eine längere Diskussion gedacht. Diese Unterhaltung wurde in den Chat verschoben . Bitte aktualisieren Sie die Frage nach Bedarf, um Klarstellungen zu erhalten, die sich aus den Kommentaren / dem Chat ergeben. Vielen Dank!
Jeff Schaller
3
Ich vermute, dass Ihr System viel austauscht. Können Sie ausführen, vmstat 5während Ihr System aktiv ist? Es ist in Ordnung, vmstat vorher zu starten und die Zeilen zu posten, die während des Einfrierens gedruckt werden. Ich suche speziell nach den Spalten siund so, die angeben, wie viel das System tatsächlich austauscht. Können Sie auch die Ausgabe von top, sortiert nach Speichernutzung (Umschalt-M), veröffentlichen? (oder was auch immer der äquivalente htop-modus ist)
marcelm
1
Wenn ein Dateisystem fast voll ist, kann es sehr langsam werden. Ich bin mir nicht sicher, ob dies bei ext4 wahrscheinlich der Fall ist.
Niemand
1
@Kais Probieren Sie beide aus und sehen Sie, was funktioniert? Mein Swap füllt maximal die Hälfte von dem, was ich vorbereitet habe, und es verursacht keine Einfrierungen. Ob es durch die Swap-Nutzung zu Verlangsamungen kommt oder nicht, hängt meiner Meinung nach auch von den Nutzungsmustern ab. Daher können unsere Erfahrungen abweichen.
JoL
2
Versuchen Sie, Swap vollständig zu deaktivieren - dies bestätigt oder beseitigt das Festplatten-Thrashing als Ursache des Problems. Der Zweck des Austauschs besteht darin, nicht verwendete Seiten auf die Festplatte zu verschieben. Wenn die meisten Seiten jedoch tatsächlich verwendet werden, hilft das Austauschen nicht. Wenn Ihre typische Arbeitsauslastung 10 GB residente Seiten erfordert, hat ein 8-GB-Computer Probleme. Die Antwort auf die Erschöpfung der Ressourcen besteht darin, entweder die Arbeitsauslastung zu verringern oder die Ressource zu erhöhen (in diesem Fall versuchen Sie es mit Chrome oder fügen Sie mehr physischen Speicher hinzu).
Bain

Antworten:

27

Was kann dazu führen, dass Linux nicht mehr reagiert?

Ein Überladen des verfügbaren Arbeitsspeichers, der eine große Menge an Auslagerungen verursacht, kann dies definitiv tun. Denken Sie daran, dass für I / O mit wahlfreiem Zugriff auf Ihre mechanische Festplatte ein Lese- / Schreibkopf bewegt werden muss, der nur etwa 100 Suchvorgänge pro Sekunde ausführen kann.

Es ist üblich, dass Linux zum Mittagessen komplett ausgeht, wenn Sie den RAM-Speicher "zu stark" überbelegen. Ich habe auch eine Festplatte und 8 GB RAM. Ich habe Probleme mit ein paar Software-Teilen mit Speicherlecks. Das heißt, ihre Speichernutzung wächst mit der Zeit und schrumpft nie. Die einzige Möglichkeit, dies zu steuern, wäre gewesen, die Software anzuhalten und anschließend neu zu starten. Angesichts der Erfahrungen, die ich dabei gemacht habe, bin ich nicht sehr überrascht, Verzögerungen von mehr als zehn Minuten zu hören, wenn Sie über 3 GB Swap generieren.

Dies wird nicht unbedingt in allen Fällen angezeigt, in denen Sie mehr als 3 GB Swap haben. Die Theorie sagt, das Schlüsselkonzept ist Trashing . Wenn Sie dagegen versuchen, zwischen zwei verschiedenen Arbeitssätzen zu wechseln und 3 GB ein- und auszutauschen, dauert es bei 100 MB / s mindestens 60 Sekunden, auch wenn das E / A-Muster perfekt optimiert werden kann. In der Praxis ist das E / A-Muster alles andere als optimal.

Nach der Schwierigkeit, die ich damit hatte, habe ich meinen Swap-Speicher auf 2 GB neu formatiert (mehrfach kleiner als zuvor), damit das System nicht so tief wechseln kann. Sie können dies auch tun, ohne die mkswapGröße der Partition zu ändern, da ein optionaler Größenparameter verwendet wird.

Das grobe Gleichgewicht besteht darin, dass der Arbeitsspeicher knapp wird und die Prozesse beendet werden und das System so lange hängt, dass Sie aufgeben und trotzdem neu starten. Ich weiß nicht, ob eine 4 GB Swap-Partition zu groß ist. es könnte davon abhängen, was du tust. Das Wichtigste ist, darauf zu achten, wann die Festplatte zu rollen beginnt, den Speicherbedarf zu überprüfen und entsprechend zu reagieren.

Das Überprüfen der Speichernutzung von Multiprozessanwendungen ist schwierig. Um die Speichernutzung pro-Prozess ohne Doppelzählung gemeinsam genutzten Speicher zu sehen, können Sie verwenden sudo atop -R, drücken Mund m, und Blick in der PSIZE Spalte. Sie können auch verwenden smem. smem -t -P firefoxzeigt die PSS aller Firefox-Prozesse an, gefolgt von einer Zeile mit der Gesamt-PSS. Dies ist der richtige Ansatz, um die Gesamtspeicherauslastung von Browsern mit Firefox oder Chrome zu messen. (Es gibt jedoch auch browserspezifische Funktionen zum Anzeigen der Speichernutzung, in denen einzelne Registerkarten angezeigt werden.)

sourcejedi
quelle
1
Kommentare sind nicht für eine längere Diskussion gedacht. Diese Unterhaltung wurde in den Chat verschoben .
Jeff Schaller
Es könnte sich lohnen, die Verwendung von ulimitin Betracht zu ziehen, um zu versuchen, die Verwendung der Prozesse zu steuern (dies ist bei einer Anwendung mit mehreren Prozessen schwierig, kann jedoch hilfreich sein).
Toby Speight
2
@TobySpeight Wenn Sie die Nutzung des App-Speichers einschränken möchten, müssen Sie cgroups verwenden. ulimithilft wirklich nicht.
Sourcejedi
Ja, das ist wahrscheinlich eine bessere Wahl. Es ist jedenfalls wirklich erwähnenswert in der Antwort.
Toby Speight
2
The important thing is to watch out for when the disk starts churning, check your memory usage, and respond accordingly.<- Wenn Sie eine grafische Benutzeroberfläche verwenden, erstellen Sie eine Crontab, auf der (jede Minute oder so) ein einfaches Skript ausgeführt wird, das überprüft, wie viel freier Arbeitsspeicher noch vorhanden ist, und Sie darauf hinweist. Ich habe mein eigenes für Linux Mint gemacht und einiges daraus gelernt. Es ist etwas, mit dem Sie versuchen können, herumzuspielen.
Ismael Miguel
5

AFAIK, Bloatware sollte nicht dazu führen, dass das Betriebssystem nicht mehr reagiert. Daher würde ich nicht in Betracht ziehen oder sogar akzeptieren, dass Bloatware die Hauptursache für das Problem ist

Sie werden das nicht mögen, aber ich denke, Bloatware ist Ihr Problem (obwohl ich nicht sicher bin, ob es sich um Speicher oder Festplatte handelt, die das Problem sind). Leider kann der Linux-Kernel schlecht mit Situationen mit hohem Speicherdruck umgehen und erfordert bekanntermaßen grundsätzlich einen Neustart, sobald der Speicher voll ist. Es gibt drei Gründe, die mich zu der Annahme veranlassen, dass Ihr Problem die Erschöpfung der Ressourcen ist:

  1. Ihr Speicherplatz auf root (/) und DATA ist fast voll. Ich bin nicht sicher, wofür Sie DATA verwenden, aber ich habe zuvor Probleme damit, meine Root-Partition zu klein zu machen und mein System funktionsunfähig zu machen.
  2. Sie haben einen hohen Speicherdruck, was bedeutet, dass Ihr RAM fast voll ist. Wenn der Arbeitsspeicher voll wird, treten Seitenfehler auf. Seitenfehler treten auf, wenn der Kernel nicht genügend Speicher für einen Prozess zuordnen kann und stattdessen einige der Systeme viel langsamer auslagern muss. Dies führt uns zu unserer letzten Beobachtung:
  3. Ihr Swap Space ist fast voll. Ihr System ist deutlich unter hohem Speicherdruck, da sowohl RAM als auch Swap fast voll sind.

Wenn Sie diese drei zusammenfassen, verfügt Ihr System nicht über genügend Ressourcen, um viel zu tun. Es ist bedauerlich, wie schlecht Linux mit Situationen mit geringem Arbeitsspeicher umgeht (im Vergleich zum NT-Kernel in Windows), aber so scheint es zu sein. Weitere Diskussionen finden Sie in diesem Reddit-Thread und seiner verknüpften Mailingliste.

Was die Behebung Ihrer Situation angeht, würde ich sagen, dass es eine gute Idee ist, die Auslagerungsgröße zu erhöhen. Da jedoch nur noch wenig Speicherplatz zur Verfügung steht, ist dies ein Problem. Wenn Ihr Minecraft-Server nicht eine Menge Leute hat, ist es meiner Meinung nach ungefährlich, seinen Speicher auf 1024 m zu reduzieren (ich persönlich verwende 1024 m mit ungefähr 10 Leuten und es funktioniert einwandfrei). Ich würde auch Zapfen oder Papier für Ihren Minecraft-Server verwenden, da diese tendenziell leistungsfähiger sind.

Viel Glück!

Verfolgungsjagd
quelle
7
Es ist eindeutig der Speicher, der das Problem ist, nicht die Festplatte. Es ist wahr, dass Linux unter hohem Speicherdruck schlecht ist. Es stimmt jedoch nicht, dass ein Neustart erforderlich ist. Wenn Sie Speicher freigeben, reagiert Linux genauso schnell wie vor dem Überschreiten der verfügbaren Speicherkapazität.
Gilles 'SO - hör auf böse zu sein'
1
@Kais Ich sagte, "dies führt uns zu unserer letzten Beobachtung", da ich über Swap Space sprach und weiterhin in Punkt 3 darüber sprechen würde. Über Minecraft sah es so aus, als ob Sie einen Minecraft-Server betreiben und dies zugeteilt hatten 3G RAM dazu. Ich habe nur gesagt, dass Sie möglicherweise nicht so viel RAM benötigen, es sei denn, Sie haben eine Menge Leute, die gleichzeitig darauf spielen. Ich sagte, "sie tendieren dazu, leistungsfähiger zu sein", wenn es um Papier und Zapfen geht, bei denen es sich um alternative Minecraft-Server handelt, die eine bessere Leistung als Vanilla MC bieten.
Chase
2
Ich habe gehört, dass es eine schlechte Idee ist, Swap generell zu verwenden. Zumindest in einer Serverumgebung, in der ein Einfrieren für 12 Minuten nicht akzeptabel ist?
9ilsdx 9rvj 0lo
2
@Kais, meiner Erfahrung nach ist Windows mit Nicht-GUI-Programmen noch schlechter, aber es wird Nicht-Vordergrund-GUI-Programme aussetzen, wenn der Speicherdruck hoch ist, was das Problem für den Desktop löst, unter der Annahme, dass Desktop-Anwendungen keinen Hintergrund haben Aufgaben.
Simon Richter
2
Vanilla Minecraft vielleicht; Aber große Modpacks erreichen leicht 3 GiB, bevor ein Spieler überhaupt
mitmacht
4

Was ist die Ausgabe von free -m? Die Menge an RAM, die Sie haben, ist sinnlos, wenn wir nicht wissen, wie viel Sie verwenden. Das und ich bin gespannt, wie viel Swap Space genutzt wird.

Ich glaube jedoch, dass Sie Ihre eigene Frage beantwortet haben. Wenn in Ihrem Browser "viele Registerkarten" geöffnet sind, kann dies Ihr System definitiv verlangsamen, wenn Sie sie nie schließen, da sie weiterhin Speicher belegen. Wenn Ihr System einfriert, wie viele haben Sie gleichzeitig geöffnet?

Es ist auch sinnvoll, wenn Ihr System aufgrund anderer speicherintensiver Aufgaben wie "Generieren eines sehr großen Diagramms aus einem sehr komplexen UML-Diagramm" abstürzt. Dies wird Ihr System beim Erzeugen des Diagramms absolut verlangsamen. Das ist also keine Überraschung.

Es klingt wirklich so, als würde sich Ihr System so verhalten. Entweder das oder ich vermisse hier etwas.

Übrigens, die Festplattenstatistik spielt keine Rolle, wenn es darum geht, dass Ihr System nicht mehr reagiert, da fast immer ein Mangel an Arbeitsspeicher dafür verantwortlich ist.

Zach Sanchez
quelle
1
"Das wird Ihr System absolut verlangsamen" - Ja, dies wird erwartet, aber es wird nicht erwartet, dass eine unkontrollierbare X-Sitzung (dh das Ergebnis eines eingefrorenen Systems) ausgelöst wird, bei der sich der Mauszeiger nicht bewegt.
Kais
1
Das ist eigentlich zu erwarten. Das von Ihnen beschriebene Verhalten ist genau das, was passiert, wenn ich zu viel RAM auf meinem System verwende. Ich habe sogar mein System verstopft, bis ich nicht mehr zu einem textbasierten Terminal wechseln konnte, und ich habe doppelt so viel RAM wie Sie. Wenn Sie jemals in eine Situation geraten, in der Sie Ihre X-Sitzung nicht verwenden können, müssen Sie zum textbasierten Terminal wechseln und die fehlerhaften Prozesse beenden. Wenn dies fehlschlägt, müssen Sie einen Neustart durchführen. Über das Beste, was ich dir sagen kann.
Zach Sanchez
1
@Kais macOS wird auch in Situationen mit wenig Arbeitsspeicher träge. Es gibt wirklich keine Möglichkeit für das System, vernünftig zu entscheiden, welchen Arbeitsspeicher es unbedingt im RAM behalten muss, so dass das Wechseln zwischen Anwendungen wie verrückt hin- und herwechselt, bis die Benutzeroberfläche nicht mehr reagiert.
Kusalananda
5
ehh, es ist nicht so, dass es nicht viel effektivere Möglichkeiten gibt, die Benutzeroberfläche des "Fenstermanagers" ansprechend zu halten. MS Research hat ein ganzes experimentelles Betriebssystem für ein Design geschrieben, das das Durchsagen von Nachfragen untersagt. Proof of Concept: Starten Sie den "Window Manager" in Midori, emulieren Sie Linux-Apps inklusive Swap. Der "Fenstermanager" reagiert auch dann noch, wenn Apps ausgetauscht werden. Zumindest könnten Sie damit einige Apps zuverlässig beenden, um Speicher freizugeben. Linux ist nicht perfekt. Durch den Wechsel von X11 zu Wayland wurde die Reaktionsfähigkeit von Gnome auf überlasteten Systemen sogar erheblich verschlechtert.
Sourcejedi
2
Festplattenstatistiken können von Bedeutung sein. Eine mögliche Ursache für die Nichtreaktivität ist ein Datenträgerfehler, der einen großen E / A-Rückstand verursacht. Aber ich sehe in diesem Fall keine Beweise dafür.
Erfolg
4

Als ich den Titel las, dachte ich sofort: "Nicht genug RAM", weil ich genau dieses Problem unter Linux selbst erlebt habe. Über 10 Minuten hektisches Disk-Thrashing nach dem Öffnen zu vieler Browser-Registerkarten. Ich stimme zu, es ist düster und muss verbessert werden. Windows behandelt diese Situation viel besser.

Einige Vorschläge:

  • Fügen Sie Ihrer Taskleiste ein Memory Monitor-Applet hinzu, damit Sie es im Auge behalten können.
  • Setzen Sie in den Einstellungen von Firefox das "Inhaltsprozesslimit" auf "1". Wie der Text unter der Einstellung besagt: "Zusätzliche Inhaltsprozesse können die Leistung bei Verwendung mehrerer Registerkarten verbessern, benötigen jedoch auch mehr Speicher."
  • Entfernen oder ersetzen Sie alle speicherhungrigen Browser-Addons. Behalten Sie Ihren Werbeblocker bei, da Werbung mehr Speicherplatz beansprucht als jeder andere Blocker.
  • Untersuchen und entfernen Sie möglicherweise andere speicherintensive Programme.

Die einzig wahre Lösung ist jedoch, mehr RAM zu kaufen.

Ein Übermaß an RAM verhindert nicht nur das Auftreten dieser Katastrophe, sondern ermöglicht es dem System auch, einen großen Dateicache im RAM aufzubauen, was Ihr System derzeit nicht tun kann, weil es so nahe am Limit läuft. Ein großer Dateicache entlastet die Festplatte und beschleunigt im Allgemeinen fast alle Aktionen auf dem System. Das ist es wert.

Boann
quelle
Tolle Antwort, vielen Dank. Aber in Bezug auf "Zusätzliche Inhaltsprozesse können die Leistung verbessern, wenn mehrere Registerkarten verwendet werden, benötigen aber auch mehr Speicher." - Wenn ich das richtig verstehe, kann Firefox standardmäßig bis zu 8 Prozesse pro Tab öffnen?
Kais
1
@Kais Ich denke, es ist 1 Prozess pro Tab. Wenn Sie das Limit auf 1 setzen, ist dies in jedem Fall eine Prozesssumme für alle Registerkarten, die weniger Speicher benötigen sollten.
Boann,
Verstanden, nochmals vielen Dank.
Kais
4

Ihre htop-Ausgabe zeigt, dass Ihr RAM-Bedarf höher ist als die Kapazität (Gesamt-RAM + SWAP). Die naheliegende erste Überlegung ist daher, die RAM-Nutzung zu reduzieren oder die RAM-Verfügbarkeit zu erhöhen.

Beachten Sie, dass die heutigen Firefox-Versionen aufgrund der Art und Weise, wie Windows / Tabs Prozess- und Speicherplatz erhalten, extrem ressourcenintensiv sind. Die Idee war, Tabs nicht zum Absturz zu bringen und den gesamten Browser in die Knie zu zwingen. Ist es den Preis wert? Wer kann das sagen? Wie auch immer, ich hatte ein ähnliches Problem, da mein Pentium 4-Mainboard nur 2 GB RAM unterstützt. Um mögliche Speicherausfälle zu vermeiden, habe ich ~ 800M Swap-Speicher auf einer Ersatz-SSD hinzugefügt, offensichtlich mit der Absicht, sie so wenig wie möglich zu nutzen. Das habe ich erreicht, indem ich eine Einstellung geändert habe, die als swappiness bekannt ist und bestimmt, wie eifrig der Kernel ist, Speicherseiten auszutauschen. Einige nützliche Befehle wie folgt.

Überprüfen Sie die aktuelle Auslagerung: cat /proc/sys/vm/swappiness

Dies kann durchaus zu einem Ergebnis von etwa 60 führen, was für die maximale Leistung auf Systemen mit geringerer Last recht hoch ist. Für Sie funktioniert dies natürlich kontraproduktiv, sodass Sie die Einstellung mit einem Befehl ändern können, um die Einstellung sysctl vm.swappiness=1zu ändern, während das System ausgeführt wird.

Um diese Änderungen zu speichern, müssen Sie nach der Datei suchen /etc/sysctl.conf. Ändern Sie in dieser Datei den Wert oder fügen Sie die Zeile hinzu vm.swappiness=1.

Beachten Sie, dass dies in Ihrem Fall keine Lösung ist, sondern eine brauchbare Problemumgehung darstellen sollte.

Credits https://askubuntu.com/questions/103915/how-do-i-configure-swappiness

Quelle für die Antwort oben, enthält weitere Erläuterungen. Ich fand diesen Beitrag in meinem Fall sehr hilfreich.

Herr Donutz
quelle
Vielen Dank für Ihre Antwort. Dies scheint eine gute Empfehlung für die VM-Konfiguration zu sein.
Kais
2

Einige ausgezeichnete Diskussionen darüber, wie das Problem verursacht wird, gehen weiter und wachsen. Ich möchte Problemen, wie Sie sie haben, gerne einen Schritt voraus sein, indem ich Hardware auf das ursprüngliche Computerdesign übertrage und / oder eine vorhandene Implementierung aktualisiere. Können Sie,

  • RAM hinzufügen (32 GB funktionieren für viele Setups)

  • Ersetzen Sie Ihr Festplattenlaufwerk durch eine SSD

  • Fügen Sie eine SSD (Solid State Drive) als Swap-Laufwerk hinzu

  • Erstellen Sie eine Swap-Partition im RAM (mit 32 oder mehr GB RAM)

  • Holen Sie sich eine schnellere Festplatte

  • Wechseln Sie zu einem System mit schnellerer Verarbeitung und einer breiteren / schnelleren Busarchitektur.

Einige dieser Hardware-Upgrades / -Ersetzungen können deutlich unter 100 US-Dollar liegen. Diese sind weder für Linux noch für Ihre genauen Software-Implementierungen spezifisch, aber die von Ihnen verwendete Hardware scheint für Ihre Aufgaben nicht geeignet zu sein.

Alter Onkel Ho
quelle
1
Sehr nützliche Antwort, danke, dass Sie auf die Empfehlungen zum Hardwareaustausch hingewiesen haben.
Kais
1
Ich hoffe es hilft. Sie wissen nicht, welcher Computertyp oder welches Gerät verwendet wird. Es handelt sich also um allgemeine Schritte, die mit größter Wahrscheinlichkeit zu einer Verbesserung führen. Einige oder alle würden helfen, Ihre spezifischen Verlangsamungen, die wahrscheinlich aufgrund von Cache-Thrashing, Swap und für schnellere und weniger Festplatten-Lese- / Schreibvorgänge im Allgemeinen sind
Old Uncle Ho
6
Die meisten davon sind gute Vorschläge, aber das Auslagern in den Arbeitsspeicher ist grundsätzlich nutzlos, es sei denn, Sie verwenden zram oder zswap für das komprimierte Auslagern in den Arbeitsspeicher. Es lohnt sich jedoch, auf eine unkomprimierte Arbeitsspeicherdiskette zu wechseln. eigentlich etwas mehr durch Overhead).
cas
Ich bin mir nicht sicher, warum irgendjemand auf RAM wechseln würde, außer beim Komprimieren, was bei Workloads mit hohem RAM / niedriger CPU-Auslastung eine großartige Idee zu sein scheint.
Peter - Reinstate Monica
1
@bain: Wie ist es besser, Seiten in den Arbeitsspeicher auszutauschen, als sie noch zuzuordnen ? Sie verwenden immer noch genauso viele Seiten physischen Arbeitsspeichers, es sei denn, Sie verwenden die Komprimierung. Das ist , wo der Wert ist. Der einzige Unterschied ist mehr Buchhaltung, aber vielleicht sauberere Hardware-Seitentabellen. Für Nur-Start-Speicher, bei dem das Aufheben der Zuordnung im Grunde genommen vernachlässigt wird, z. B. Funktionen / Daten, die nur während des Startvorgangs berührt werden, ist das Austauschen auf die Festplatte besser, da kein DRAM-Speicherplatz belegt wird. Für Hintergrund-Daemons, die nicht interaktiv verwendet werden, ist die Latenzzeit nicht wichtig.
Peter Cordes
2

Normalerweise wird "nur" X11 unbrauchbar. Um einen Tastendruck von Ihrer Tastatur auf ein Programm zu bekommen und etwas auf dem Bildschirm anzuzeigen, muss Code in mehreren verschiedenen Prozessen ausgeführt werden. (X-Server, um den Tastenanschlag vom Kernel abzurufen, xterm oder ein gleichwertiges Element, um das Ereignis abzurufen und zu entscheiden, etwas zu zeichnen, und dann eine Nachricht an den X-Server zu senden, um eine Glyphe aus einer Schriftart zu zeichnen.)

Wenn Sie mit der Maus über ein Fenster mit einem Webbrowser fahren, auf dem eine Seite mit ein paar Javascript-Fehlern angezeigt wird, kann dies zu einer Reihe von Meldungen für eine Reihe von Prozessen führen, die alle dazu führen, dass diese Prozesse aktiviert werden und eine Reihe von Daten berühren. Vermutlich mit ein paar "zwischengespeicherten" unkomprimierten Bitmaps. Es ist also sehr wahrscheinlich, dass dadurch mehr Dinge entfernt werden, die bald benötigt werden.

Strg + Alt + F2, um zu einer anderen virtuellen Konsole zu wechseln, ermöglicht es normalerweise, sich anzumelden und Shell-Befehle mit nur ein paar Sekunden Latenz auszuführen, wenn etwas Swap-Thrashing verursacht. Es ist nur so bash; Der Linux-Kernel ist nicht austauschbar und verfügt über den gesamten VT- und
Tastatur-TTY-Code.


Um eine Verlangsamung zu vermeiden, wenn Sie nicht wirklich auf dem Paukenschlag sind, kann es hilfreich sein, "swappiness" zu reduzieren. ZB habe ich das /proc/sys/vm/swappinessTunable 6auf meinem Desktop mit 16 GB RAM und einer 2 GB Swap-Partition auf einer NVMe-SSD eingestellt. Sie können mehr über das Optimieren der interaktiven Latenzzeit (im Gegensatz zum Serverdurchsatz) lesen. Jeder Führer wird dies als abstimmbar bezeichnen.

Wenn Sie jedoch überhaupt einen Swap haben, verwendet Linux diesen, bevor Sie den OOM-Killer aufrufen. Halten Sie Ihre Swap-Partition klein , gerade groß genug, damit Linux wirklich veralteten Mist auslagern kann, der normalerweise für eine lange Zeit nicht verwendet wird. (zB Speicherlecks!)

Ich hatte keine Probleme damit, dass der Swap voll ist. Modernes Linux hat es gut mit begrenztem Swap-Speicher zu tun. Chrom (das ich anstelle von Firefox verwende) wird manchmal langsamer, wenn Dutzende Stapelüberlauf-Registerkarten geöffnet sind, aber The Great Suspender ist ein nettes Addon zum Entladen von Registerkarten, wenn Sie sie nicht verwenden. Ich denke, das spart mir viel RAM, obwohl es nur Registerkarten entlädt, in denen Sie nichts in ein Textfeld eingegeben haben. Möglicherweise ist es auch für Firefox verfügbar.


Wie bereits erwähnt, sind 16 GB RAM für die interaktive Verwendung mit Linux sehr gut geeignet. Die DRAM-Preise sind derzeit relativ niedrig . Nach einem Anstieg vor etwa 1,5 Jahren sind sie größtenteils wieder gesunken.

Peter Cordes
quelle
Tolle Antwort, vielen Dank. Aber in Bezug auf "ein Haufen von Javascript-Mist kann ein Haufen von Nachrichten für ein Haufen von Prozessen entstehen, die alle dazu führen, dass diese Prozesse aufwachen und ein Haufen von Daten berühren" - ich frage mich, was das für Prozesse sind, sind sie Firefox untergeordnete Prozesse?
Kais
@Kais: Fenstermanager, Webbrowser, X-Server, möglicherweise verschiedene andere X-Clients auf einem komplizierteren Desktop. Und alle anderen Prozesse, deren Fenster Ihre Maus bewegt (was ich dachte, als ich diesen Satz schrieb). zB in KDE ist die Taskleiste ein separater Prozess ( plasma) vom kwinFenstermanager.
Peter Cordes
Ich benutze LXDE, also sind in meinem Fall nur die Openbox und der XOrg-Server die Prozesse, die aufwachen müssen? Welche Art von Nachrichten werden an sie weitergeleitet?
Kais
@Kais: X11-Protokollnachrichten über einen Unix-Domain-Socket. Versuchen Sie, xevirgendwann auszuführen, um zu sehen, welche Art von Nachrichten Sie durch Bewegen der Maus erhalten können. Versuchen Sie auch strace xev, die Systemaufrufe anzuzeigen, die für die Clientseite erforderlich sind.
Peter Cordes
Ich verstehe, danke. Wenn xevich den Befehl ausführe, erhalte ich nur Nachrichten, indem ich zu verschiedenen Fenstern wechsle und auf sie klicke. Dies ist jedoch nicht der Fall, wenn ich nur mit der Maus über den Bildschirm fahre.
Kais
-2

Was kann dazu führen, dass Linux beim Surfen auf bestimmten Websites für Minuten nicht mehr reagiert?

Sie verwenden Linux nicht richtig. Das macht sich besonders auf einem ressourcenbeschränkten Rechner bemerkbar. Sie benötigen weder mehr RAM noch einen schnelleren Prozessor.

Hintergrund:

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

So beheben Sie Ihr Problem:

Lassen Sie die Nichtbenutzerprogramme in Ruhe, aber ändern Sie die Prioritäten (nette Ebenen) Ihrer Benutzerprogramme, damit sie keine Probleme verursachen. Bearbeiten Sie, was Ihre Programme startet, um nette Levels einzuschließen, von normalerweise kein Problem bis zum schlimmsten Täter.

Beispiele aus der Praxis:

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}

Ihr WorstOffender wird noch Minuten lang nicht mehr reagieren, das ist buchstäblich ein Problem mit der besseren Box, aber es wird jetzt nicht dazu führen, dass Ihr gesamtes Betriebssystem (Linux) und alles andere, was Sie ausführen, auch nicht mehr reagieren.

Michael
quelle
2
Ich habe jahrzehntelang mit Linux gearbeitet, sowohl mit vielen Servern als auch auf meiner eigenen Workstation (oft in sehr begrenzten VM-Setups), und musste kein einziges Mal ein RAM-bezogenes Leistungsproblem mit beheben nice -n. "Sie brauchen nicht mehr RAM" - er braucht sicherlich mehr RAM; oder könnte verwenden ulimit, um die schlimmsten Straftäter hart zu begrenzen, so dass sein vorhandener RAM wieder ausreicht. "Sie verwenden kein Linux-Recht." ist komplett aus.
9.
Und ich habe in den letzten 22 Jahren mit Linux-GUI-Installationen auf ressourcenbeschränkter Hardware gearbeitet, und „nette“ Arbeiten, um zu lösen, dass „Linux minutenlang nicht reagiert“
Michael,
Ich leugne nicht, dass es funktioniert; Ich sage nur , dass es nach wie setzt den „richtige“ Weg zur Arbeit mit Linux nicht das Beste , was sein kann.
AnoE