J'utilise Linux 4.15, et cela m'arrive de nombreuses fois lorsque je navigue sur Google, Facebook ou tout autre site Web gourmand en ressources - L'ensemble du système d'exploitation ne répond plus, se bloque et devient inutile. La seule chose que je vois fonctionner est le disque (partition système principale formatée en ext4), qui est massivement utilisé (limitation des E/S).
Je suis obligé d'attendre une minute ou plus pour me débarrasser du ballonnement, parfois il ne répond pas douze minutes, et donc je suis frustré. Le fait que le système d'exploitation ne soit pas capable de bien gérer le multitâche a tendance à refléter un comportement absolument bizarre et inacceptable.
Non seulement cela se produit avec Firefox, mais avec any application d'interpréteur javascript comprenant Microsoft VSCode ou angular-cli (ng serve
command) ainsi que tout autre thread d'exécution gourmand en ressources - comme le cas de plantuml lors de la génération d'un très grand graphe à partir d'un diagramme UML très complexe.
Aujourd'hui, le système d'exploitation devient totalement ingérable, après le lancement d'un logiciel de récupération de données pour un disque dur externe (sur une partition ext4) qui a récemment été débranché d'un mauvais port USB par un petit mouvement.
Je ne suis pas en mesure de dire la cause profonde d'un tel comportement de buggy
J'ai de nombreux onglets ouverts dans le navigateur et 94% d'utilisation de la partition OS selon la sortie df
:
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
En tant que matériel, j'utilise:
Intel Core i3 v2348M selon 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
8 Go de RAM. (Voir htop
sortie ci-dessous).
Disque dur interne de 500 Go - Il s'agit du rapport S.M.A.R.T. du système d'exploitation:
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.
Voici les résultats de l'utilisation des ressources par 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
Ceux-ci sont les résultats des statistiques VM également, générées par la commande vmstat 5
.
AFAIK, le bloatware ne devrait pas rendre le système d'exploitation insensible, donc je ne considérerais ni n'accepterais même que le bloatware est la cause première du problème - car le travail du système d'exploitation consiste à isoler les processus et à assurer le multitâche.
Je ne sais pas si ce problème est spécifique au système d'exploitation, au matériel ou à la configuration.
Des idées?
Qu'est-ce qui peut rendre Linux si insensible?
La surutilisation de la RAM disponible, qui provoque une grande quantité de permutation, peut certainement le faire. N'oubliez pas que les E/S à accès aléatoire sur votre disque dur mécanique nécessitent le déplacement d'une tête de lecture/écriture, qui ne peut effectuer qu'une centaine de recherches par seconde.
Il est habituel pour Linux de sortir totalement déjeuner, si vous sur-engagez RAM "trop". J'ai aussi un disque tournant et 8 Go de RAM. J'ai eu des problèmes avec quelques logiciels avec des fuites de mémoire. C'est-à-dire que leur utilisation de la mémoire ne cesse de croître au fil du temps et ne diminue jamais, donc la seule façon de le contrôler aurait été d'arrêter le logiciel puis de le redémarrer. D'après les expériences que j'ai eues pendant cette entendre des retards de plus de dix minutes, si vous générez plus de 3 Go de swap.
Vous ne le verrez pas nécessairement dans tous les cas où vous avez plus de 3 Go de swap. La théorie dit que le concept clé est thrashing . D'un autre côté, si vous essayez de basculer entre deux ensembles de travail différents et que cela nécessite un échange de 3 Go vers l'intérieur et vers l'extérieur, à 100 Mo/s, cela prendra au moins 60 secondes même si le modèle d'E/S peut être parfaitement optimisé. En pratique, le modèle d'E/S sera loin d'être optimal.
Après la difficulté que j'ai rencontrée, j'ai reformaté mon espace de swap à 2 Go (plusieurs fois plus petit qu'auparavant), afin que le système ne puisse pas swaper aussi profondément. Vous pouvez le faire même sans gâcher le redimensionnement de la partition, car mkswap
prend un paramètre de taille facultatif.
L'équilibre approximatif est entre le manque de mémoire et l'arrêt des processus, et le blocage du système pendant si longtemps que vous abandonnez et redémarrez de toute façon. Je ne sais pas si une partition de swap de 4 Go est trop grande; cela peut dépendre de ce que vous faites. L'important est de surveiller le début de la rotation du disque, de vérifier l'utilisation de la mémoire et de réagir en conséquence.
La vérification de l'utilisation de la mémoire des applications multi-processus est difficile. Pour voir l'utilisation de la mémoire par processus sans compter la mémoire partagée en double, vous pouvez utiliser Sudo atop -R
, presse M et met regardez dans la colonne PSIZE. Vous pouvez également utiliser smem
. smem -t -P firefox
affichera le PSS de tous vos processus Firefox, suivi d'une ligne avec le PSS total. Il s'agit de la bonne approche pour mesurer l'utilisation totale de la mémoire de Firefox ou Chrome. (Bien qu'il existe également des fonctionnalités spécifiques au navigateur pour afficher l'utilisation de la mémoire, qui afficheront des onglets individuels).
AFAIK, le bloatware ne devrait pas rendre le système d'exploitation insensible, donc je ne considérerais ni n'accepterais même pas que le bloatware soit la cause première du problème
Vous n'allez pas aimer ça, mais je pense que le bloatware est votre problème (même si je ne suis pas sûr que ce soit la mémoire ou le disque qui est le problème) ). Malheureusement, le noyau Linux est horrible pour gérer les situations de pression de mémoire élevée et est connu pour nécessiter essentiellement un redémarrage une fois la mémoire épuisée. Il y a trois choses qui m'amènent à croire que votre problème est l'épuisement des ressources:
Fondamentalement, associez ces trois éléments et votre système n'a pas suffisamment de ressources disponibles pour faire beaucoup de choses. En ce qui concerne le malheur de voir à quel point Linux gère mal les situations de faible mémoire (par rapport, disons, au noyau NT sous Windows), mais cela semble être le cas. Vous pouvez trouver plus de discussion dans ce fil Reddit et sa liste de diffusion liée.
Quant à la façon de résoudre votre situation, je dirais que l'augmentation de la taille de votre swap est une bonne idée, mais comme vous manquez d'espace disque, ce sera un problème. À moins que votre serveur Minecraft n'ait une tonne de personnes, je pense qu'il serait prudent de réduire sa mémoire à environ 1024 m (j'utilise personnellement 1024 m avec environ 10 personnes et cela fonctionne très bien). J'utiliserais également un robinet ou du papier pour votre serveur Minecraft car ils ont tendance à être plus performants.
Bonne chance!
Quand j'ai lu le titre, ma pensée immédiate était "pas assez de RAM", car j'ai moi-même rencontré exactement ce problème sous Linux, plus de 10 minutes de frénésie de disque frénétique après avoir ouvert trop d'onglets de navigateur. Je suis d'accord, c'est lamentable et doit être amélioré. Windows gère beaucoup mieux cette situation.
Quelques suggestions:
Cependant, la seule vraie solution est d'acheter plus de RAM.
Non seulement une abondance de RAM empêchera cette catastrophe de se produire, mais elle permettra au système de créer un grand cache de fichiers en RAM, ce que votre système ne peut actuellement jamais faire car il s'exécute si proche de la limite. Un cache de fichiers volumineux enlèvera le travail du disque dur et rendra presque toutes les actions sur le système plus rapides en général. Cela en vaut la peine.
Quelle est la sortie de free -m
? La quantité de RAM que vous avez est inutile si nous ne savons pas combien vous utilisez. Cela et je suis intéressé de savoir combien d'espace de swap est utilisé.
Je pense cependant que vous avez répondu à votre propre question. Le fait d'ouvrir "de nombreux onglets" dans votre navigateur peut certainement ralentir votre système si vous ne les fermez jamais, car ils continueront à consommer de la mémoire malgré tout; lorsque votre système se bloque, combien en avez-vous à la fois?
Il est également logique que votre système se bloque à partir d'autres tâches gourmandes en mémoire telles que "générer un très grand graphique à partir d'un diagramme UML très complexe". Cela ralentira absolument votre système lors de la génération du graphique, ce n'est donc pas une surprise.
Il semble vraiment que c'est ainsi que votre système est censé se comporter. Soit ça, soit je manque quelque chose ici.
Soit dit en passant, les statistiques du disque dur n'ont pas d'importance quand votre système ne répond plus, car un manque de mémoire est presque toujours le coupable.
Votre sortie htop montre que votre besoin de RAM est supérieur à sa capacité (RAM totale + SWAP). Donc, la première considération évidente à faire est de réduire RAM utilisation ou augmentation RAM disponibilité.
Notez que les versions modernes de Firefox sont extrêmement gourmandes en ressources, en raison de la façon dont les fenêtres/onglets sont accordés au processus et à l'espace mémoire. L'idée était d'éviter de planter les onglets en mettant le navigateur entier à genoux. Vaut-il le prix? Qui peut dire ... Quoi qu'il en soit, j'ai eu un problème similaire à cause de ce qui précède, car ma carte mère Pentium 4 ne prend en charge que 2 Go de RAM. Pour éviter d'éventuels plantages épuisés en mémoire, j'ai ajouté ~ 800M d'espace de swap sur un SSD de rechange, évidemment avec l'intention de l'utiliser le moins possible. J'ai atteint cet objectif en modifiant un paramètre appelé swappiness, qui détermine à quel point le noyau est impatient d'échanger des pages mémoire. Quelques commandes utiles comme suit.
Vérifiez la permutabilité actuelle: cat /proc/sys/vm/swappiness
Cela peut vous donner un résultat autour de 60, ce qui est assez élevé pour des performances maximales sur des systèmes avec une charge plus faible. Pour vous, cela fonctionne évidemment contre-productif, vous pouvez donc modifier le paramètre à l'aide d'une commande telle que sysctl vm.swappiness=1
pour modifier le paramètre pendant le fonctionnement du système.
Pour enregistrer ces modifications, vous devrez rechercher le fichier /etc/sysctl.conf
. Dans ce fichier, modifiez la valeur ou ajoutez la ligne vm.swappiness=1
.
Attention, ce n'est pas une solution dans votre cas, mais cela devrait être une solution de contournement utilisable.
Crédits https://askubuntu.com/questions/103915/how-do-i-configure-swappiness
source pour la réponse ci-dessus, comprend des explications supplémentaires. J'ai trouvé ce message très utile dans mon cas.
Une excellente discussion sur la façon dont le problème est causé, se poursuit et se développe. J'aime anticiper les problèmes tels que ceux que vous rencontrez en lançant du matériel lors de la conception initiale de l'ordinateur et/ou en mettant à niveau une implémentation existante. Peut tu,
ajouter RAM (32 Go fonctionne très bien pour de nombreuses configurations)
remplacez votre disque dur par un SSD
ajouter un SSD (Solid State Drive) pour swap drive
créer une partition de swap dans RAM (avec 32 Go ou plus de RAM)
obtenir un disque dur plus rapide
passer à un système avec un traitement plus rapide et une architecture de bus plus large/plus rapide.
Certaines de ces mises à niveau/remplacements de matériel peuvent coûter bien moins de 100 $ US. Ce ne sont pas spécifiquement Linux, ni vos implémentations logicielles exactes, mais le matériel que vous utilisez ne semble pas adapté à vos tâches.
Habituellement, c'est "juste" le X11 qui devient inutilisable. Pour obtenir une séquence de touches de votre clavier vers un programme et lui faire afficher quoi que ce soit à l'écran, le code de plusieurs processus différents doit être exécuté. (Serveur X pour obtenir la séquence de touches du noyau, xterm ou équivalent pour obtenir l'événement et décider de dessiner quelque chose, puis envoyer un message au serveur X pour dessiner un glyphe à partir d'une police.)
Le simple fait de passer la souris sur une fenêtre avec un navigateur Web affichant une page avec un tas de conneries Javascript peut entraîner un tas de messages pour un tas de processus, qui provoquent tous ces processus à se réveiller et à toucher un tas de données. Vraisemblablement, y compris un tas de bitmaps non compressés "mis en cache". Il est donc très probable que cela expulse plus de choses qui seront bientôt nécessaires.
ctrl + alt + F2 pour basculer vers une autre console virtuelle permet généralement de se connecter et d'exécuter des commandes Shell avec seulement quelques secondes de latence lorsque quelque chose provoque un swash thrashing. C'est juste bash
; le noyau Linux n'est pas échangeable et il a tous les VT et
clavier <-> code TTY.
Pour éviter un ralentissement lorsque vous n'êtes pas vraiment débordant, la réduction du "swappiness" peut vous aider. par exemple. J'ai réglé le /proc/sys/vm/swappiness
réglable sur 6
sur mon bureau avec 16 Go de RAM et une partition d'échange de 2 Go sur un SSD NVMe. Vous pouvez en savoir plus sur le réglage de la latence interactive (par opposition au débit du serveur); tout guide le mentionnera) accordable.
Mais si vous avez un échange, Linux l'utilisera avant d'invoquer le tueur OOM. Gardez votre partition de swap petite , juste assez grande pour que Linux affiche des conneries vraiment périmées qui ne sont généralement pas utilisées pendant longtemps. (par exemple des fuites de mémoire!)
Je n'ai eu aucun problème avec le swap étant plein. Linux moderne traite très bien d'avoir un espace d'échange limité. Le chrome (que j'utilise à la place de Firefox) devient parfois lent avec des dizaines d'onglets Stack Overflow ouverts, mais The Great Suspender est un bon complément pour décharger les onglets lorsque vous ne les utilisez pas. Je pense que cela permet d'économiser beaucoup de RAM pour moi, même si cela ne déchargera que les onglets où vous n'avez rien tapé dans une zone de texte. Il pourrait également être disponible pour Firefox.
Comme d'autres l'ont suggéré, 16 Go de RAM est vraiment bien pour une utilisation interactive avec Linux. Les prix des DRAM sont relativement bas actuellement ; après avoir atteint un sommet il y a environ 1,5 an, ils ont pour la plupart décliné à nouveau.