약 한 달 전에 새로 설치 한 데비안 시드 상자가 있는데 현재 데스크탑 앱이 실행되고 있지 않습니다.
ssh를 통해 실행하려고하면 명령이 하드 디스크 작동을 매우 어렵게 만듭니다. Ubuntu 8.04를 실행하는 동안 몇 주 전에 시스템이 완벽하게 작동했습니다. 하드웨어에 문제가없고, 스마트 도구가 문제를보고하지 않으며, 메모리 검사 등이 없어야합니다.
문제가 스와핑과 관련이 있다고 생각합니다.
$ free -h
total used free shared buffers cached
Mem: 998M 986M 12M 0B 464K 904M
-/+ buffers/cache: 81M 917M
Swap: 511M 511M 0B
테스트 결과, 대부분의 물리적 램이 캐시에 사용되지만 재부팅하지 않고 스왑을 비활성화 할 수 없음을 알았습니다.
# swapoff -a
swapoff: /swapfile: swapoff failed: Cannot allocate memory
이 stackoverflow answer에 언급 된 스크립트를 실행할 때 가장 높은 스왑 사용 프로세스는 거의 1.5megs를 사용하지 않았으며 총 수는 다음과 같습니다.
"Overall swap used: 18376 kB"
… 그것이 멈추거나 무료로보고있는 반 공연과는 거리가 멀다.
나는 변화 시도 swappiness
에 1
반 한 달 전에,하지만 차이 (동일한 메모리 사용 패턴)이 없습니다.
범인이 될 수있는 아이디어가 있습니까?
편집 : 여기 /proc/meminfo
내용이 있습니다 (유사한 상황이지만 904 대신 702megs의 캐시가 있으며 크롬은 여전히 열려 있습니다).
MemTotal: 1022464 kB
MemFree: 14344 kB
Buffers: 192 kB
Cached: 719816 kB
SwapCached: 2212 kB
Active: 304304 kB
Inactive: 657344 kB
Active(anon): 294128 kB
Inactive(anon): 651264 kB
Active(file): 10176 kB
Inactive(file): 6080 kB
Unevictable: 0 kB
Mlocked: 0 kB
HighTotal: 127336 kB
HighFree: 316 kB
LowTotal: 895128 kB
LowFree: 14028 kB
SwapTotal: 524284 kB
SwapFree: 0 kB
Dirty: 4 kB
Writeback: 0 kB
AnonPages: 239528 kB
Mapped: 11968 kB
Shmem: 703760 kB
Slab: 28924 kB
SReclaimable: 12116 kB
SUnreclaim: 16808 kB
KernelStack: 2200 kB
PageTables: 5812 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1035516 kB
Committed_AS: 2193368 kB
VmallocTotal: 122880 kB
VmallocUsed: 14092 kB
VmallocChunk: 105548 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 911352 kB
DirectMap2M: 0 kB
그리고 여기의 top -b -n 1
출력은 :
top - 22:00:18 up 1 day, 2:34, 4 users, load average: 1,97, 1,25, 0,88
Tasks: 137 total, 3 running, 134 sleeping, 0 stopped, 0 zombie
%Cpu(s): 4,9 us, 3,0 sy, 2,7 ni, 83,2 id, 6,1 wa, 0,0 hi, 0,0 si, 0,0 st
KiB Mem: 1022464 total, 1008788 used, 13676 free, 188 buffers
KiB Swap: 524284 total, 524284 used, 0 free, 719792 cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7861 stenyak 20 0 6336 1252 976 R 18,0 0,1 0:00.03 top
5194 isabel 30 10 44372 5344 1404 R 12,0 0,5 0:36.11 glmatrix
17940 root 20 0 103m 6844 2828 S 6,0 0,7 11:02.21 Xorg
1 root 20 0 2280 28 0 S 0,0 0,0 0:02.49 init
2 root 20 0 0 0 0 S 0,0 0,0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0,0 0,0 0:15.25 ksoftirqd/0
5 root 20 0 0 0 0 S 0,0 0,0 0:00.00 kworker/u:0
6 root rt 0 0 0 0 S 0,0 0,0 0:00.93 migration/0
7 root rt 0 0 0 0 S 0,0 0,0 0:00.46 watchdog/0
8 root rt 0 0 0 0 S 0,0 0,0 0:00.73 migration/1
10 root 20 0 0 0 0 S 0,0 0,0 0:17.30 ksoftirqd/1
12 root rt 0 0 0 0 S 0,0 0,0 0:00.43 watchdog/1
13 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 cpuset
14 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 khelper
15 root 20 0 0 0 0 S 0,0 0,0 0:00.00 kdevtmpfs
16 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 netns
17 root 20 0 0 0 0 S 0,0 0,0 0:00.44 sync_supers
18 root 20 0 0 0 0 S 0,0 0,0 0:00.00 bdi-default
19 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 kintegrityd
20 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 kblockd
22 root 20 0 0 0 0 S 0,0 0,0 0:00.07 khungtaskd
23 root 20 0 0 0 0 D 0,0 0,0 2:50.47 kswapd0
24 root 25 5 0 0 0 S 0,0 0,0 0:00.00 ksmd
25 root 20 0 0 0 0 S 0,0 0,0 0:00.00 fsnotify_mark
26 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 crypto
99 root 20 0 0 0 0 S 0,0 0,0 0:00.00 khubd
115 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 ata_sff
116 root 20 0 0 0 0 S 0,0 0,0 0:00.00 scsi_eh_0
117 root 20 0 0 0 0 S 0,0 0,0 0:00.00 scsi_eh_1
118 root 20 0 0 0 0 S 0,0 0,0 0:01.66 kworker/u:1
152 root 20 0 0 0 0 S 0,0 0,0 0:02.12 jbd2/sda1-8
153 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 ext4-dio-unwrit
280 root 20 0 2944 352 128 S 0,0 0,0 0:00.30 udevd
423 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 hd-audio0
1286 root 20 0 0 0 0 S 0,0 0,0 0:07.06 jbd2/sda2-8
1287 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 ext4-dio-unwrit
1561 root 20 0 0 0 0 S 0,0 0,0 0:03.09 flush-8:0
1603 root 20 0 2376 48 0 S 0,0 0,0 0:00.33 rpcbind
1634 statd 20 0 2648 68 64 S 0,0 0,0 0:00.00 rpc.statd
1639 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 rpciod
1641 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 nfsiod
1648 root 20 0 2576 0 0 S 0,0 0,0 0:00.00 rpc.idmapd
2019 root 20 0 29088 976 0 S 0,0 0,1 0:22.26 rsyslogd
2123 root 20 0 1876 84 24 S 0,0 0,0 0:00.23 acpid
2161 message+ 20 0 3756 728 0 S 0,0 0,1 0:02.06 dbus-daemon
2213 daemon 20 0 2152 20 0 S 0,0 0,0 0:00.00 atd
2231 root 20 0 4488 220 128 S 0,0 0,0 0:00.00 bluetoothd
2242 root 10 -10 0 0 0 S 0,0 0,0 0:00.00 krfcommd
2259 avahi 20 0 3272 292 168 S 0,0 0,0 0:00.66 avahi-daemon
2262 avahi 20 0 3156 24 0 S 0,0 0,0 0:00.00 avahi-daemon
2265 root 20 0 5968 180 152 S 0,0 0,0 0:00.00 bitlbee
2271 root 20 0 0 0 0 S 0,0 0,0 0:11.69 kworker/0:2
2304 root 20 0 19056 700 220 S 0,0 0,1 0:00.75 NetworkManager
2334 root 20 0 5536 176 108 S 0,0 0,0 0:02.86 cron
2350 root 20 0 6700 492 152 S 0,0 0,0 0:00.01 sudo
2351 root 20 0 15304 5880 1428 R 0,0 0,6 61:42.79 iotop
2359 root 20 0 24256 600 56 S 0,0 0,1 0:01.12 polkitd
2390 root 20 0 6892 368 180 S 0,0 0,0 0:00.15 modem-manager
2392 root 20 0 7536 80 0 S 0,0 0,0 0:00.13 cupsd
2396 root 20 0 20964 516 296 S 0,0 0,1 0:00.15 gdm3
2712 root 20 0 10068 196 84 S 0,0 0,0 0:11.72 kerneloops
2714 root 20 0 6896 2108 372 S 0,0 0,2 0:05.69 ddclient - slee
2802 Debian-+ 20 0 7424 100 40 S 0,0 0,0 0:00.05 exim4
2877 daemon 20 0 1868 236 172 S 0,0 0,0 0:01.22 uptimed
2881 root 20 0 6464 208 104 S 0,0 0,0 0:00.27 sshd
2913 root 20 0 1848 72 8 S 0,0 0,0 0:00.00 minissdpd
2936 root 20 0 4328 40 36 S 0,0 0,0 0:00.00 getty
2937 root 20 0 4328 40 36 S 0,0 0,0 0:00.00 getty
2938 root 20 0 4328 40 36 S 0,0 0,0 0:00.00 getty
2939 root 20 0 4328 40 36 S 0,0 0,0 0:00.00 getty
2940 root 20 0 4328 40 36 S 0,0 0,0 0:00.00 getty
2941 root 20 0 4328 40 36 S 0,0 0,0 0:00.00 getty
2961 root 20 0 23384 540 156 S 0,0 0,1 0:00.88 accounts-daemon
2965 root 20 0 29216 292 64 S 0,0 0,0 0:01.35 console-kit-dae
3050 root 20 0 27408 320 0 S 0,0 0,0 0:00.48 upowerd
3115 stenyak 20 0 6260 320 84 S 0,0 0,0 0:00.51 screen
3119 stenyak 20 0 6260 248 40 S 0,0 0,0 0:00.61 screen
3121 stenyak 20 0 6260 132 16 S 0,0 0,0 0:00.48 screen
3124 stenyak 20 0 6388 1004 572 S 0,0 0,1 1:33.81 p2p.sh
3125 stenyak 20 0 34176 5604 1764 S 0,0 0,5 1:57.10 quasselcore
3129 stenyak 20 0 55268 2972 652 S 0,0 0,3 3:00.32 bot.py
3280 rtkit 21 1 18980 180 64 S 0,0 0,0 0:01.23 rtkit-daemon
3367 root 20 0 0 0 0 S 0,0 0,0 0:00.00 kauditd
3684 root 20 0 2940 340 112 S 0,0 0,0 0:00.00 udevd
3685 root 20 0 2940 208 0 S 0,0 0,0 0:00.00 udevd
5845 root 20 0 6444 904 592 S 0,0 0,1 0:00.00 cron
5876 stenyak 20 0 1932 428 368 S 0,0 0,0 0:00.00 sh
5878 stenyak 20 0 6048 1232 1080 S 0,0 0,1 0:00.00 memmon.sh
7857 stenyak 20 0 5060 508 448 S 0,0 0,0 0:00.00 sleep
9071 root 20 0 9816 860 200 S 0,0 0,1 0:00.10 sshd
9080 stenyak 20 0 10180 1112 136 S 0,0 0,1 0:06.93 sshd
9081 stenyak 20 0 9280 3232 148 S 0,0 0,3 0:00.62 bash
9436 root 20 0 7396 1188 684 S 0,0 0,1 0:07.05 bitlbee
10285 root 20 0 0 0 0 S 0,0 0,0 0:00.00 kworker/1:0
12728 stenyak 20 0 7960 2960 648 S 0,0 0,3 23:35.01 htop
12950 root 20 0 9832 80 76 S 0,0 0,0 0:00.08 sshd
12955 stenyak 20 0 9832 0 0 S 0,0 0,0 0:00.04 sshd
12956 stenyak 20 0 9304 36 32 S 0,0 0,0 0:00.64 bash
17939 root 20 0 23284 1080 320 S 0,0 0,1 0:00.11 gdm-simple-slav
18062 root 20 0 29808 964 364 S 0,0 0,1 0:00.38 gdm-session-wor
20066 root 20 0 0 0 0 S 0,0 0,0 0:09.72 kworker/0:0
28369 isabel 20 0 1932 112 108 S 0,0 0,0 0:00.03 sh
28404 isabel 20 0 3868 260 68 S 0,0 0,0 0:00.20 ssh-agent
28407 isabel 20 0 3516 0 0 S 0,0 0,0 0:00.00 dbus-launch
28408 isabel 20 0 3420 304 116 S 0,0 0,0 0:00.24 dbus-daemon
28416 isabel 20 0 6344 744 548 S 0,0 0,1 0:00.29 xfconfd
28422 isabel 20 0 8336 496 248 S 0,0 0,0 0:01.46 xscreensaver
28424 isabel 20 0 21932 580 340 S 0,0 0,1 0:00.17 xfce4-session
28430 isabel 20 0 24392 2032 1160 S 0,0 0,2 0:16.32 xfwm4
28432 isabel 20 0 117m 2072 908 S 0,0 0,2 0:01.26 xfce4-panel
28434 isabel 20 0 22520 256 256 S 0,0 0,0 0:00.06 Thunar
28436 isabel 20 0 21016 688 460 S 0,0 0,1 0:00.06 xfsettingsd
28437 isabel 20 0 119m 3344 1312 S 0,0 0,3 0:03.50 xfdesktop
28441 isabel 20 0 21072 272 268 S 0,0 0,0 0:00.07 kerneloops-appl
28443 isabel 20 0 29816 540 228 S 0,0 0,1 0:00.10 polkit-gnome-au
28450 isabel 20 0 263m 544 276 S 0,0 0,1 0:00.30 xfce4-volumed
28452 isabel 20 0 63936 488 0 S 0,0 0,0 0:00.31 tracker-store
28457 isabel 20 0 23240 768 472 S 0,0 0,1 0:00.18 xfce4-settings-
28460 isabel 9 -11 99532 500 248 S 0,0 0,0 0:00.38 pulseaudio
28470 isabel 20 0 21936 612 312 S 0,0 0,1 0:00.20 panel-6-systray
28472 isabel 20 0 339m 1348 552 S 0,0 0,1 0:00.42 xfce4-mixer-plu
28473 isabel 20 0 22028 2292 1740 S 0,0 0,2 0:59.33 xfce4-oragecloc
28514 isabel 20 0 371m 21m 2428 S 0,0 2,1 3:46.22 chromium
28517 isabel 20 0 111m 3020 288 S 0,0 0,3 0:00.58 chromium
28518 isabel 20 0 1948 64 0 S 0,0 0,0 0:00.00 chromium-sandbo
28519 isabel 20 0 120m 3324 288 S 0,0 0,3 0:00.20 chromium
28522 isabel 20 0 128m 3252 204 S 0,0 0,3 0:00.01 chromium
28558 isabel 20 0 208m 52m 476 S 0,0 5,3 1:25.92 chromium
28573 isabel 20 0 271m 103m 1244 S 0,0 10,3 3:01.64 chromium
28693 isabel 20 0 120m 3836 628 S 0,0 0,4 0:43.86 chromium
28696 isabel 20 0 83088 6412 108 S 0,0 0,6 0:16.55 GoogleTalkPlugi
28706 isabel 20 0 159m 6896 972 S 0,0 0,7 9:00.72 chromium
32332 root 20 0 0 0 0 S 0,0 0,0 0:06.24 kworker/1:2
32351 stenyak 9 -11 99108 1032 192 S 0,0 0,1 0:00.51 pulseaudio
32455 root 20 0 9816 108 76 S 0,0 0,0 0:00.11 sshd
32460 stenyak 20 0 9992 264 144 S 0,0 0,0 0:07.43 sshd
32462 stenyak 20 0 9300 1976 108 S 0,0 0,2 0:01.31 bash
답변
RAM이 스왑 된 메모리 양을 초과 할 수 없기 때문에 스왑 오프 할 수 없습니다. 합법적 인 오류 메시지가 나타납니다.
작은 스 니펫.
if (!quiet || errno == ENOMEM)
warn(_("%s: swapoff failed"), orig_special);
return -1;
내 의견으로는, 워크로드는 RAM 수요를 증가시킵니다. 더 많은 메모리가 필요한 워크로드를 실행 중입니다. 전체 스왑의 사용은이를 나타냅니다. 또한 swappiness를 1로 변경하는 것은 현명한 결정이 아닐 수 있습니다. swappiness를 1로 설정한다고해서 교체가 수행되지는 않습니다. 스와핑과 관련하여 커널이 얼마나 적극적인지를 나타내며 스와핑을 제거하지는 않습니다. 교체가 필요한 경우 스와핑이 발생합니다.
또한, 왜 당신이 스왑을 비활성화하려고하는지 모르겠습니다. 많은 양의 RAM이 없으면 스왑을 비활성화하지 않아야합니다.
물론 재부팅 할 수 있으며 스왑 사용량은 0이됩니다. 그리고 안전하게 교환 할 수 있습니다. 그러나 이것이 장기적으로 문제를 해결하지는 못합니다.
/proc/meminfo
출력을 게시 하시겠습니까?
답변
가능한 이유 중 하나는 예를 들어 메모리로 백업 된 파일 시스템에 /tmp
마운트 되기 때문입니다 tmpfs
.
이 경우 ( df -hT /tmp
), 거기에 남아있는 파일을 제거 / 이동하면 응용 프로그램이 / tmp (또는 tmpfs
:에 마운트 된 파일 시스템)를 다시 채우지 않아야합니다 df -ht tmpfs
.이 문제가 해결됩니다.
답변
시스템이 스왑으로 메모리를 스왑 아웃하고 대신 버퍼에 메모리를 사용하는 경우 실제로 나쁘지는 않습니다. 이것은 아마도 두 가지를 나타냅니다.
- 많이 사용되지 않는 많은 응용 프로그램이 실행되고 있습니다 (~ 500MB)
- 보유한 1GB의 RAM보다 많은 데이터를 읽고 쓰는 다른 응용 프로그램을 사용합니다. 시스템은 빠른 액세스를 위해 메모리에 하드 디스크 데이터를 버퍼링하여 이러한 응용 프로그램의 성능을 향상 시키려고합니다.
예, ~ 600MB의 메모리 만 사용중인 것 같습니다. 시스템 스왑의 원인은 메모리를 과도하게 사용하는 응용 프로그램이 아니라 버퍼에 부딪히는 매우 많은 I / O 워크로드입니다. 모든 I / O를 수행하는 프로세스를 식별 할 수 있습니까? 서버를 무엇을 사용하고 있습니까?
답변
프로세스 단위로 스왑 크기를 제공하는 도구는 알지 못하지만 쉽게 쓸 수 있습니다 … (쉘 스크립트 예제는 아래를 참조하십시오)
Linux에는라는 도구가 제공됩니다 smem
. 데비안 / 우분투에서 설치하려면 사용할 수 있어야합니다 (프로세스에 많은 파이썬 패키지를 설치합니다).
apt-get install smem
그런 다음 사용하려면 smem
명령 줄에 입력 하십시오.
프로세스 스왑 사용량이 얼마인지 확인하는 다른 솔루션 은 프로세스 파일 에서 VmSwap 매개 변수 를 확인하는 것 status
입니다.
사용 top
또는 htop
또는 ps
또는 pgrep
또는 pidof
(프로세스 식별자를 결정 … PID
) 다음 상태 파일을 보면 :
$ pidof myprocess
123
$ cat /proc/123/status
여기에는 현재 프로세스에서 사용하는 메모리에 대한 정보가 포함됩니다. 예가 있습니다 :
Name: snapinit
State: S (sleeping)
Tgid: 2769
Ngid: 0
Pid: 2769
PPid: 1
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 64
Groups:
NStgid: 2769
NSpid: 2769
NSpgid: 2765
NSsid: 2765
VmPeak: 141952 kB
VmSize: 141952 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 11552 kB
VmRSS: 3444 kB
VmData: 772 kB
VmStk: 136 kB
VmExe: 244 kB
VmLib: 62356 kB
VmPTE: 208 kB
VmPMD: 12 kB
VmSwap: 1968 kB
HugetlbPages: 0 kB
Threads: 1
SigQ: 0/3912
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000014006
SigIgn: 0000000000001000
SigCgt: 00000001800004c8
CapInh: 0000000000000000
CapPrm: 0000003fffffffff
CapEff: 0000003fffffffff
CapBnd: 0000003fffffffff
CapAmb: 0000000000000000
Seccomp: 0
Cpus_allowed: 1
Cpus_allowed_list: 0
Mems_allowed: 00000000,00000001
Mems_allowed_list: 0
voluntary_ctxt_switches: 36
nonvoluntary_ctxt_switches: 23
관심있는 섹션은 Vm<name>
매개 변수 (즉, 프로세스에 사용 가능한 유일한 종류의 메모리 인 가상 메모리, 커널 만이 실제 실제 메모리를 처리하고 VM은 MMU에 의해 생성됨)를 표시하는 섹션입니다 .
VmPeak: 141952 kB
VmSize: 141952 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 11552 kB
VmRSS: 3444 kB
VmData: 772 kB
VmStk: 136 kB
VmExe: 244 kB
VmLib: 62356 kB
VmPTE: 208 kB
VmPMD: 12 kB
VmSwap: 1968 kB
필자의 경우이 프로세스에서만 사용되는 스왑 메모리 (VmSwap)는 1968Kb, 거의 2Mb입니다.
VmLib 매개 변수는 공유 라이브러리 (.so 파일)에 사용되는 메모리 양을 보여줍니다. 비록 이것이 큰 것처럼 보이지만 공유 라이브러리가 사용하는 메모리는 모든 프로세스에서 공유됩니다.
쉘에서 다음과 같은 명령 행으로 매개 변수를 검색 할 수 있습니다.
#!/bin/sh
echo " NAME PID SWAP"
for PID in /proc/[0-9]*
do
if stat $PID/status >/dev/null
then
# get name of process
procname=`grep 'Name:' $PID/status | awk -e '{ print $2 };'`
# get amount of swap in use by that process
procswap=`grep 'VmSwap:' $PID/status | awk -e '{ print $2 };'`
printf "%-21s %11d %11d\n" $procname `basename $PID` $procswap
fi
done
프로세스가 종료되면 $ PID / status 파일이 사라지고이 for 루프는이를 제대로 확인하지 않습니다. 또한 일부 파일은 일반 사용자가 읽을 수 없습니다 (즉, 루트 인 경우 각 프로세스에 대한 결과가 표시되고, 그렇지 않으면 일부 프로세스가 오류 또는 0Kb를 반환 함)
샘플 출력이 있습니다. SWAP 데이터는 킬로 바이트 입니다.
NAME PID SWAP
systemd 1 348
watchdog/0 10 0
ipv6_addrconf 106 0
ureadahead 13234 28
gnome-calculato 13997 0
apache2 14175 7240
freshclam 1447 3072
systemd-logind 1449 244
답변
당신이 그 이유의가, 어떤 프로세스를 중지 할 수 있도록 스왑 가득 죽이는 프로세스 사용을 kill -9 PID
사용 후, 그리고
sudo swapoff -a
내 조건에서 나는 sidekiq worker를 멈추고 스왑 메모리를 재 할당했다.