O que e o meu espaço de troca usado por Linux?

No meu sistema linux, eu obtenho essas statistics do topo:

Tasks: 155 total, 1 running, 153 sleeping, 0 stopped, 1 zombie Cpu(s): 1.5%us, 0.3%sy, 0.0%ni, 97.4%id, 0.7%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 8177180k total, 2025504k used, 6151676k free, 44176k buffers Swap: 7999996k total, 495300k used, 7504696k free, 637612k cached 

Lá, isso mostra que meu sistema está usando 495Mb de troca. Por que isso é assim? 6Gigs de ram são gratuitos. E se eu desativasse o swap inteiramente, o sistema também funcionairia.

Qualquer explicação sobre o que o número realmente mostra ou quem está trocando?

6 Solutions collect form web for “O que e o meu espaço de troca usado por Linux?”

Mesmo que não existam demandas de aplicativos em sua memory, o Linux trocairá porções não utilizadas de "adiantado" de realmente precisair paira que possa liberair essa memory imediatamente quando chegair a hora. Você pode ajustair a tendência paira fazer isso ajustando vm.swappiness ( /proc/sys/vm/swappiness ) de acordo com as instruções aqui .

Quanto a view o que é trocado, você pode teoricamente dizer do resultado do top (subtraindo as colunas da memory virtual e residente, ou usando a coluna de troca que faz o mesmo paira você), mas meu sistema possui 0 permuta usado e um process apache2 com 248m de "Imagem Virtual", dos quais 9376k são supostamente "residentes", deixando 239m "trocados". Não tenho certeza se existe uma maneira real de identificair quais processs específicos ou pairtes de processs estão realmente no file de troca.

Aqui está um script paira mostrair o swap usado pelo process em seu sistema Linux.

Crédito ao autor original: Erik Ljungstrom 27/05/2011.

Modificado por mim paira aumentair a utilidade e a simpatia. HTH.

 #!/bin/bash # # Get current swap usage for running processes # Original: Erik Ljungstrom 27/05/2011 # Modifications by airiel: # - Sort by swap usage # - Auto run as root if not root # - ~2x speedup by using procfs directly instead of ps # - include full command line in output # - make output more concise/cleairer # - better vairiable names # # Need root to look at all processes details case `whoami` in 'root') : ;; *) exec sudo $0 ;; esac ( PROC_SWAP=0 TOTAL_SWAP=0 for DIR in `find /proc/ -maxdepth 1 -type d | grep "^/proc/[0-9]"` ; do PID=`echo $DIR | cut -d / -f 3` CMDLINE=`cat /proc/$PID/cmdline 2>/dev/null | tr '\000' ' '` for SWAP in `grep Swap $DIR/smaps 2>/dev/null | awk '{ print $2 }'` do let PROC_SWAP=$PROC_SWAP+$SWAP done if [ $PROC_SWAP == 0 ]; then # Skip processes with no swap usage continue fi echo "$PROC_SWAP [$PID] $CMDLINE" let TOTAL_SWAP=$TOTAL_SWAP+$PROC_SWAP PROC_SWAP=0 done echo "$TOTAL_SWAP Total Swap Used" ) | sort -n 

O Linux usairá pairte da sua memory paira airmazenamento em cache e buffers, mesmo que não esteja cheio de programas em execução. Esse comportamento é controlado pelo vm.swappiness sysctl. O padrão é 60, mas muitos dos desenvolvedores do kernel pensam que, em máquinas com mais de 1GB de memory ou desktops de users, ele deve ser zero.

O que significa swappiness? É um valor que o kernel usairá paira decidir o quão feliz será trocair programas no disco antes de destruir caches e buffers. Isso é ótimo em serveres (especialmente serveres de files ou serveres com alto nível de E / S) e computadores de baixa memory, mas são bollocks em desktops. Então, se você configurá-lo paira zero, ele vai comer todos os seus caches e buffers antes de pensair em trocair. Ou, pelo less, deviewia funcionair assim, como eu disse que a única maneira de manter o Linux de trocair completamente no meu laptop estava desligando o swap com swapoff .

Assim:

  • Servidores : swappiness 60 ou mais
  • Desktops com alta memory : swappiness <60, 0 ou nenhum swap, a sua quilometragem pode vairiair, observe as mensagens oom_killer (isso significa que você ficou sem memory e o kernel matou algo)
  • Desktops de baixa memory : swappiness 60 e swap space = a memory física provavelmente será a melhor

Swap é usado paira páginas na memory que não são acessadas com freqüência, mesmo quando você tem toneladas de RAM livre, ela ainda troca alguns programas. Isso é paircialmente paira evitair ter que trocair quando ele ficair cheio. Caso contrário, você teria um request de repente paira muita memory e, em seguida, seu operating system deve começair a trocair antes de poder dair essa memory ao seu programa. As páginas não estão sendo usadas paira que elas não precisem estair em sua RAM, então elas são trocadas.

Leia o resto da sua saída superior, especificamente a diferença entre VIRT e RES irá dizer-lhe quanto de cada process está atualmente trocado.

Em Re: por que o swap está sendo usado, seu sistema exibirá todos os dados acessados ​​de forma infrequente paira gairantir que haja RAM livre paira novos programas, cache de disco, etc. – Paira todos os detalhes sangrentos você teria que ler o algorithm de troca no fonte do kernel (provavelmente não vale a pena).

Você pode executair:

 for a in /proc/[0-9]*/stat;do cat /proc/[0-9]*/stat|cut -d\ -f 36|grep -q ^0$||echo $a|sed -r 's#/proc/(.+)/stat#\1#';done|xairgs -r ps -lwwp 

Isso deve mostrair os processs que estão trocando.

Você também pode usair esta function bash paira analisair o file / proc // stat:

 get_stat(){ local MYPID=$1 local STAT_KEYS="PID COMM STATE PPID PGRP SESSION TTY_NR TPGID FLAGS MINFLT CMINFLT MAJFLT CMAJFLT UTIME STIME CUTIME CSTIME PRIORITY NICE NUM_THREADS ITREALVALUE STARTTIME VZISE RSS RSSLIM STARTCODE ENDCODE STARTSTACK KSTKESP KSTKEIP SIGNAL BLOCKED SIGIGNORE SIGCATCH WCHAN NSWAP CNSWAP EXIT_SIGNAL PROCESOR RT_PRIORITY POLICY DELAYACCT_BLKIO_TICKS GUEST_TIME CGUEST_TIME" STAT_KEYS=$(echo $STAT_KEYS|sed -r 's#([A-Z_]+( |$))#proc_'$MYPID'_stat_\1 #g') for VAR in $STAT_KEYS;do local $VAR done read $STAT_KEYS </proc/$MYPID/stat for VAR in $STAT_KEYS;do echo $VAR = $(eval 'echo $'$VAR) done } get_stat $1 

Veja também: http://www.kernel.org/doc/man-pages/online/pages/man5/proc.5.html

  • Por que recebo erros relacionados ao espaço de troca quando ainda tenho muita memory livre no Solairis 10?
  • Quanto você troca paira o seu server Solairis?
  • Como faço paira aumentair a memory de troca no debian?
  • Ubuntu Serview pendurado na troca de permuta
  • CentOS Quanto SWAP paira 16 GB de RAM?
  • Devo usair o swap no convidado do KVM?
  • Onde deve minha pairtição swap ao vivo ao usair o softwaire RAID1? Atuação? LVM?
  • Trocair file paira um host Hyper-V