Estou usando o Linux 4.15, e isso acontece comigo muitas vezes quando navego no Google, Facebook ou qualquer outro site que consome muitos recursos - Todo o sistema operacional fica sem resposta, congelado e inútil. A única coisa que vejo funcionando é o disco (partição principal do sistema formatada como ext4), que está em uso maciço (otimização de E / S).
Sou forçado a esperar um minuto ou mais para me livrar do inchaço, às vezes ele fica sem resposta por doze minutos e, portanto, fico frustrado. O fato de o sistema operacional não ser capaz de lidar bem com multitarefa tende a refletir um comportamento absolutamente estranho e inaceitável.
Isso não acontece apenas com o Firefox, mas com qualquer aplicativo interpretador de javascript, incluindo o Microsoft VSCode ou angular-cli ( ng serve
comando), bem como qualquer outro encadeamento de execução que consome muitos recursos - como o caso de plantuml ao gerar um gráfico muito grande de um diagrama UML muito complexo.
Hoje, o sistema operacional se torna totalmente incontrolável, após o lançamento de um software de recuperação de dados para um HDD externo (partição ext4) que recentemente foi desconectado de uma porta USB ruim por pequenos movimentos.
Eu não sou capaz de dizer a causa raiz desse comportamento de buggy
Tenho muitas guias abertas no navegador e 94% de uso da partição do SO conforme a df
saída:
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
Como hardware, estou usando:
Intel Core i3 v2348M conforme
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 GB de RAM. (Veja a
htop
saída abaixo).- 99,83 MHz de velocidade do barramento da placa principal
Disco rígido interno de 500 GB - Este é o relatório SMART do sistema operacional:
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.
Estes são os resultados do uso de recursos por 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
Esses são os resultados das estatísticas da VM, geradas pelo comando vmstat 5
.
AFAIK, o bloatware não deve deixar o sistema operacional sem resposta, então eu não consideraria ou aceitaria que o bloatware é a causa raiz do problema - já que o trabalho do sistema operacional é isolar processos e garantir multitarefa.
Não sei se esse problema é específico do sistema operacional, específico do hardware ou da configuração.
Alguma ideia?
vmstat 5
enquanto o sistema está funcionando? Não há problema em iniciar o vmstat antecipadamente e postar as linhas impressas durante os congelamentos. Estou procurando especificamente pelas colunassi
eso
, que indicam quanto o sistema está realmente trocando. Além disso, você pode postar a saída detop
, classificada por uso de memória (shift-M)? (ou qualquer que seja o modo htop equivalente)Respostas:
O supercomprometimento da RAM disponível, que causa uma grande quantidade de trocas, pode definitivamente fazer isso. Lembre-se de que a E / S de acesso aleatório no seu HDD mecânico requer a movimentação de um cabeçote de leitura / gravação, que pode fazer apenas 100 buscas por segundo.
É comum o Linux sair totalmente para almoçar, se você comprometer demais a RAM "demais". Eu também tenho um disco giratório e 8 GB de RAM. Eu tive problemas com alguns softwares com vazamentos de memória. Ou seja, o uso de memória continua crescendo ao longo do tempo e nunca diminui; portanto, a única maneira de controlá-lo seria parar o software e depois reiniciá-lo. Com base nas experiências que tive durante isso, não estou muito surpreso ao ouvir atrasos em dez minutos, se você estiver gerando 3 GB ou mais de swap.
Você não verá necessariamente isso em todos os casos em que tiver mais de 3 GB de swap. A teoria diz que o conceito-chave está se debatendo . Por outro lado, se você estiver tentando alternar entre dois conjuntos de trabalho diferentes e exigir troca e devolução de 3 GB, a 100 MB / s, levará pelo menos 60 segundos, mesmo que o padrão de E / S possa ser perfeitamente otimizado. Na prática, o padrão de E / S estará longe de ser o ideal.
Após a dificuldade que tive com isso, reformatei meu espaço de troca para 2 GB (várias vezes menor que antes), para que o sistema não pudesse trocar tão profundamente. Você pode fazer isso mesmo sem mexer no redimensionamento da partição, porque
mkswap
utiliza um parâmetro de tamanho opcional.O equilíbrio aproximado é entre ficar sem memória e interromper os processos e interromper o sistema por tanto tempo que você desiste e reinicia de qualquer maneira. Não sei se uma partição de swap de 4 GB é muito grande; pode depender do que você está fazendo. O importante é observar quando o disco começa a agitar, verificar o uso da memória e responder de acordo.
É difícil verificar o uso da memória de aplicativos com vários processos. Para ver o uso da memória por processo sem contar duas vezes a memória compartilhada, você pode usar
sudo atop -R
, pressionar Me me procurar na coluna PSIZE. Você também pode usarsmem
.smem -t -P firefox
mostrará o PSS de todos os seus processos do firefox, seguido por uma linha com o PSS total. Essa é a abordagem correta para medir o uso total de memória dos navegadores baseados no Firefox ou Chrome. (Embora existam também recursos específicos do navegador para mostrar o uso da memória, que mostrarão guias individuais).fonte
ulimit
para tentar controlar o uso dos processos (é complicado com um aplicativo de vários processos, mas pode ser útil).ulimit
realmente não ajuda.The important thing is to watch out for when the disk starts churning, check your memory usage, and respond accordingly.
<- ou, se você usar uma GUI, crie um crontab que execute um script simples (a cada minuto) que verifique a quantidade de RAM livre restante, avisando-o. Eu fiz o meu próprio para o Linux Mint e aprendi bastante com ele. É algo que você pode tentar brincar.Você não vai gostar disso, mas acho que o problema é o bloatware (embora não tenha certeza se é o problema da memória ou do disco). Infelizmente, o kernel do Linux é péssimo em lidar com situações de alta pressão de memória e é conhecido por exigir basicamente uma reinicialização quando a memória estiver esgotada. Há três coisas que me levam a acreditar que seu problema é esgotamento de recursos:
Basicamente, junte esses três e seu sistema não terá recursos suficientes disponíveis para fazer quase tudo. É lamentável o quão mal o Linux lida com situações de pouca memória (em comparação com, digamos, o kernel do NT no Windows), mas parece que é assim. Você pode encontrar mais discussões neste tópico do Reddit e em sua lista de discussão vinculada.
Quanto a como corrigir sua situação, eu diria que aumentar o tamanho da troca é uma boa ideia, mas como você tem pouco espaço em disco, isso será um problema. A menos que seu servidor Minecraft tenha um monte de pessoas, acho que seria seguro reduzir sua memória para algo em torno de 1024m (eu pessoalmente uso 1024m com cerca de 10 pessoas e funciona bem). Eu também usaria torneira ou papel para o servidor Minecraft, pois eles tendem a ter melhor desempenho.
Boa sorte!
fonte
Qual é o resultado de
free -m
? A quantidade de RAM que você tem é inútil se não soubermos quanto você está usando. Isso e estou interessado em saber quanto espaço de troca está sendo usado.Eu acho que você respondeu sua própria pergunta, no entanto. Ter "muitas guias" abertas no navegador pode definitivamente tornar o sistema mais lento, se você nunca as fechar, pois elas continuarão consumindo memória; quando o sistema congela, quantos você abre por vez?
Também faz sentido se o seu sistema estiver congelando de outras tarefas que exigem muita memória, como "gerar um gráfico muito grande a partir de um diagrama UML muito complexo". Isso desacelerará totalmente o sistema, pois gera o gráfico, o que dificilmente surpreende.
Realmente parece que é assim que seu sistema deve se comportar. Ou isso ou eu estou perdendo alguma coisa aqui.
A propósito, as estatísticas de HDD não importam quando o sistema não responde, pois a falta de memória é quase sempre o culpado.
fonte
Quando li o título, meu pensamento imediato foi "insuficiente RAM", porque eu mesmo experimentei esse problema no Linux, mais de 10 minutos de disco frenético agitando depois de abrir muitas guias do navegador. Concordo, é sombrio e precisa de melhorias. O Windows lida com essa situação muito melhor.
Algumas sugestões:
No entanto, a única solução verdadeira é comprar mais RAM.
Não apenas uma abundância de RAM impedirá que essa catástrofe ocorra, como permitirá que o sistema construa um grande cache de arquivos na RAM, o que o seu sistema atualmente não pode fazer porque corre tão perto do limite. Um cache de arquivos grandes retira o trabalho do disco rígido e faz com que quase todas as ações no sistema pareçam mais rápidas em geral. Vale a pena.
fonte
Sua saída htop mostra que sua necessidade de RAM é superior à sua capacidade (RAM total + SWAP). Portanto, a primeira consideração óbvia a ser feita é reduzir o uso de RAM ou aumentar sua disponibilidade.
Observe que as versões modernas do firefox são extremamente famintas por recursos, devido à maneira como as janelas / guias recebem processo e espaço de memória. A idéia era evitar travar as guias, deixando todo o navegador de joelhos. Vale o preço? Quem sabe ... De qualquer forma, tive um problema semelhante devido ao acima exposto, pois minha placa mãe Pentium 4 suporta apenas 2 GB de RAM. Para evitar possíveis falhas de memória esgotadas, adicionei ~ 800M de espaço de troca em um SSD sobressalente, obviamente com a intenção de usá-lo o mínimo possível. Eu consegui isso alterando uma configuração conhecida como swappiness, que determina o quão ansioso o kernel está para trocar as páginas de memória. Alguns comandos úteis da seguinte maneira.
Verifique a swappiness atual:
cat /proc/sys/vm/swappiness
Isso pode resultar em cerca de 60, o que é bastante alto para o desempenho máximo em sistemas com carga mais baixa. Para você, obviamente, isso funciona contraproducente, para que você possa alterar a configuração usando um comando como
sysctl vm.swappiness=1
para alterar a configuração enquanto o sistema estiver em execução.Para salvar essas alterações, você precisará procurar o arquivo
/etc/sysctl.conf
. Nesse arquivo, altere o valor ou adicione a linhavm.swappiness=1
.Lembre-se, isso não é uma solução no seu caso, mas deve ser uma solução útil.
Créditos https://askubuntu.com/questions/103915/how-do-i-configure-swappiness
fonte para a resposta acima, inclui mais explicações. Achei esse post muito útil no meu caso.
fonte
Uma excelente discussão sobre como o problema é causado, continua e cresce. Eu gosto de me antecipar a problemas como o que você experimenta, lançando o hardware no design do computador inicial e / ou atualizando uma implementação existente. Você pode,
adicione RAM (32 GB funciona muito bem para muitas configurações)
substitua sua unidade de disco rígido por um SSD
adicione um SSD (Solid State Drive) para a unidade de troca
crie uma partição de swap na RAM (com 32 ou mais GB de RAM)
obtenha um HDD mais rápido
mude para um sistema com processamento mais rápido e arquitetura de barramento mais ampla / mais rápida.
Algumas dessas atualizações / substituições de hardware podem estar bem abaixo de US $ 100US. Eles não são específicos para o Linux, nem suas implementações exatas de software, mas o hardware que você está usando não parece adequado às suas tarefas.
fonte
Geralmente é "apenas" o X11 que se torna inutilizável. Para obter um pressionamento de tecla do teclado em um programa e mostrar algo na tela, é necessário executar o código em vários processos diferentes. (Servidor X para obter o pressionamento de tecla do kernel, xterm ou equivalente para obter o evento e decidir desenhar algo, envie uma mensagem ao servidor X para desenhar um glifo de uma fonte.)
Apenas passar o mouse sobre uma janela com um navegador da Web mostrando uma página com várias porcarias de Javascript pode resultar em várias mensagens para vários processos, os quais fazem com que esses processos sejam ativados e toque em vários dados. Presumivelmente, incluindo um monte de bitmaps descompactados "em cache". Portanto, é altamente provável que despeje mais coisas que são necessárias em breve.
ctrl + alt + F2 para alternar para outro console virtual geralmente possibilita o login e a execução de comandos do shell com apenas alguns segundos de latência quando algo está causando a troca de trocas. É só
bash
; o kernel do Linux não é permutável e possui todo ocódigo VTY e teclado <-> TTY.
Para evitar lentidão quando você não está realmente se debatendo, reduzir a "troca" pode ajudar. por exemplo, defino o
/proc/sys/vm/swappiness
sintonizador para6
no meu desktop com 16GB de RAM e uma partição swap de 2 GB em um NVMe SSD. Você pode ler mais sobre o ajuste da latência interativa (em oposição à taxa de transferência do servidor); qualquer guia mencionará isso sintonizável.Mas se você tiver alguma troca, o Linux a usará antes de chamar o killer do OOM. Mantenha sua partição swap pequena , grande o suficiente para que o Linux pagine porcaria realmente obsoleta que normalmente não se acostuma por muito tempo. (por exemplo, vazamentos de memória!)
Não tive problemas com o swap estar cheio. O Linux moderno lida com espaço de troca limitado muito bem. O Chromium (que eu uso em vez do Firefox) às vezes fica lento com dezenas de guias do Stack Overflow abertas, mas o The Great Suspender é um ótimo complemento para descarregar as guias quando você não as estiver usando. Eu acho que economiza RAM significativa para mim, embora apenas descarregue abas onde você não digitou nada em uma caixa de texto. Também pode estar disponível para o Firefox.
Como outros sugeriram, 16 GB de RAM são realmente bons para uso interativo com o Linux. Os preços da DRAM estão relativamente baixos atualmente ; depois de cravar cerca de 1,5 anos atrás, eles caíram novamente.
fonte
plasma
) dokwin
gerenciador de janelas.xev
dia para ver que tipo de mensagem você pode receber ao mover o mouse. Tente tambémstrace xev
ver as chamadas do sistema que envolvem o lado do cliente.xev
comando, recebo mensagens apenas alternando para janelas diferentes e clicando nelas, mas não é o caso quando apenas passo o mouse.Você não está usando o Linux corretamente. O que se torna especialmente visível em uma máquina com recursos limitados. Você não precisa de mais RAM, nem um processador mais rápido.
Fundo:
Para 'corrigir' o seu problema:
Deixe os programas não-usuários em paz, mas comece a alterar as prioridades (níveis agradáveis) dos seus programas para que eles não causem problemas. Edite o que inicia seus programas para incluir bons níveis, que geralmente não são um problema, para o pior infrator.
Exemplos do mundo real:
Seu WorstOffender continuará sem resposta por alguns minutos, isso é literalmente um problema para comprar uma caixa melhor, mas agora não estará causando o sistema operacional inteiro (Linux) e tudo o que você está executando para deixar de responder.
fonte
nice -n
. "Você não precisa de mais RAM" - ele certamente precisa de mais RAM; ou poderiaulimit
limitar os piores criminosos para que sua RAM existente seja suficiente novamente. "Você não está usando o Linux corretamente." está completamente desligado.