สลับการใช้งานสูงเกินไปหรือไม่


9

ฉันมีกล่อง Debian Sid ติดตั้งใหม่ประมาณเดือนที่แล้วโดยไม่มีแอปเดสก์ท็อปที่ทำงานอยู่ในขณะนี้

คำสั่งใด ๆ ที่ฉันพยายามเรียกใช้ (ผ่าน 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

เมื่อรันสคริปต์ที่กล่าวถึงในคำตอบสแต็คโอเวอร์โฟลว์กระบวนการแลกเปลี่ยนสูงสุดที่ใช้คือใช้เวลาเพียง 1.5megs และจำนวนรวมคือ:

"Overall swap used: 18376 kB"

... ซึ่งอยู่ไกลจากกิ๊กครึ่งที่ htop หรือรายงานฟรี

ฉันพยายามเปลี่ยนswappinessไป1ครึ่งเดือนที่ผ่านมา แต่ไม่มีความแตกต่างกัน (รูปแบบการใช้หน่วยความจำเดียวกัน)

มีความคิดอะไรที่จะเป็นผู้ร้าย?

แก้ไข : นี่คือ/proc/meminfoเนื้อหา (สถานการณ์ที่คล้ายกัน แต่ 702megs ของแคชแทน 904 และโครเมียมยังคงเปิดอยู่):

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

คุณเปลี่ยนพารามิเตอร์อื่นนอกเหนือจากนี้swappinessหรือไม่?
David Schwartz

เครื่องของคุณเต็ม ใช้topเพื่อค้นหาหน่วยความจำของกระบวนการที่หลีกเลี่ยงได้และเริ่มต้นใหม่
Thorbjørn Ravn Andersen

@DavidSchwartz ไม่นอกเหนือจากการถอนการติดตั้งสิ่งที่ไม่สำคัญ (เช่น munin, apache ... ) ฉันไม่ได้ทำอะไรเลย
STenyaK

@ ThorbjørnRavnAndersenกระบวนการไม่ได้ใช้จำนวนเงินเหล่านั้นของหน่วยความจำ (ค่า VIRT, RES มิได้ SHR) ไม่ได้ใกล้เคียงกับครึ่งกิ๊กดังนั้นผมจึงมีความคิดว่าจะฆ่า อีกครั้งหน่วยความจำที่ใช้ทั้งหมด - / + บัฟเฟอร์ / แคชเพียง 81megs (และเห็นได้ชัดว่ามีเพียง 18megs ของการแลกเปลี่ยนถูกใช้โดยกระบวนการจริงหรือไม่?)
STenyaK

คุณมีพาร์ติชั่นสว็อป 511 MB ที่เราใช้เต็ม! ไม่ได้เป็นเพียง 18. freeความน่าเชื่อถือ
Thorbjørn Ravn Andersen

คำตอบ:


4

คุณไม่สามารถ swapoff ได้เนื่องจากจำนวนหน่วยความจำที่สลับไม่สามารถถูก overtaken โดย RAM ของคุณ คุณได้รับข้อความแสดงข้อผิดพลาดที่ถูกต้อง

ตัวอย่างขนาดเล็ก

if (!quiet || errno == ENOMEM)
    warn(_("%s: swapoff failed"), orig_special);

return -1;

ในความคิดของฉันปริมาณงานของคุณเพิ่มความต้องการ RAM ของคุณ คุณกำลังเรียกใช้งานปริมาณงานที่ต้องใช้หน่วยความจำมากขึ้น การใช้งานการแลกเปลี่ยนทั้งหมดบ่งชี้ว่า การเปลี่ยนความว่องไวเป็น 1 อาจไม่ใช่การตัดสินใจที่ชาญฉลาด การตั้งค่า swappiness เป็น 1 ไม่ได้บ่งชี้ว่าการสลับจะไม่ทำ มันแสดงให้เห็นว่าเคอร์เนลเชิงรุกจะเกี่ยวข้องกับการแลกเปลี่ยนอย่างไรมันไม่ได้กำจัดการสลับสับเปลี่ยน การแลกเปลี่ยนจะเกิดขึ้นหากจำเป็นต้องทำ

นอกจากนี้ฉันไม่ทราบสาเหตุที่คุณพยายามปิดการแลกเปลี่ยน นอกจากว่าคุณมี RAM เป็นตันและตันคุณไม่ควรปิดใช้งานการสลับ

แน่นอนคุณสามารถรีบูตและการใช้งานการสลับจะเป็นศูนย์แล้ว และคุณสามารถแลกเปลี่ยนได้อย่างปลอดภัยแล้ว แต่นั่นไม่ได้แก้ปัญหาในระยะยาว

คุณจะรังเกียจการโพสต์/proc/meminfoเอาท์พุท


ฉันกำลังรอการแลกเปลี่ยนเพื่อเติมอีกครั้ง (ขึ้นอยู่กับการใช้คอมพิวเตอร์ซึ่งลดลงในวันนี้) ฉันพยายามปิดการแลกเปลี่ยนเฉพาะเพื่อลอง / ตรวจสอบว่าแคช RAM จะลดลงหรือไม่ (จากสิ่งที่ฉันอ่านบนเน็ต 904megs ของแคชควรถูกยกเลิกเมื่อต้องการ RAM เพิ่มและฉันต้องการ RAM 511megs ในการสั่งซื้อ เพื่อปิดการแลกเปลี่ยน)
STenyaK

การแลกเปลี่ยนเต็มไปอีกครั้งเมื่อวานนี้ ก่อนที่ผู้ใช้จะรีบูตคอมพิวเตอร์สคริปต์ cron-ed จะสามารถบันทึกข้อมูลบางส่วนซึ่งฉันได้แก้ไขไว้ในคำถามเดิม หวังว่าจะช่วย
STenyaK

3

เหตุผลหนึ่งที่เป็นไปได้คือให้คุณ/tmpติดตั้งบนtmpfsระบบไฟล์ที่สำรองข้อมูลโดยหน่วยความจำ

หากเป็นกรณี (นี้df -hT /tmp) เพียงแค่ลบไฟล์ / ย้ายถิ่นฐานอยู่ที่นั่นให้แน่ใจว่าการประยุกต์ใช้ไม่เติมอีกครั้ง / tmp (หรือระบบไฟล์ใด ๆ ที่ติดตั้งอยู่บนtmpfs: df -ht tmpfs) และปัญหานี้จะได้รับการแก้ไข


จุดดี. ข้อมูลเกี่ยวกับtmpfsโดยทั่วไปจะแสดงเป็นแคช
Stéphane Chazelas

ไม่รู้เหมือนกัน! ฉันได้เพิ่มdf -ht tmpfs --totalสคริปต์ดีบัก cron-ed ของฉัน ครั้งต่อไปที่ปัญหาเกิดขึ้นฉันจะโพสต์ผลลัพธ์ แต่คำถามหนึ่งข้อ: ฉันควรกังวลเกี่ยวกับUsedคอลัมน์หรือSizeคอลัมน์หรือไม่
STenyaK

usedคอลัมน์รายงานขนาดของหน่วยความจำที่ใช้โดยไฟล์ การลบไฟล์เหล่านี้จะทำให้หน่วยความจำว่าง
jlliagre

1

โปรดทราบว่าจริง ๆ แล้วมันไม่เลวเลยถ้าระบบสลับหน่วยความจำออกเป็น swap และใช้หน่วยความจำสำหรับบัฟเฟอร์แทน นี่อาจบ่งบอกถึงสองสิ่ง:

  • คุณมีแอปพลิเคชั่นจำนวนหนึ่งที่ทำงาน (~ 500 MB) ที่ไม่ได้ใช้งานมาก
  • คุณใช้แอปพลิเคชันอื่นที่อ่าน / เขียนข้อมูลจำนวนมากมากกว่า RAM ขนาด 1 GB ที่คุณมี ระบบพยายามปรับปรุงประสิทธิภาพสำหรับแอปพลิเคชันเหล่านี้โดยการบัฟเฟอร์ข้อมูลฮาร์ดดิสก์ในหน่วยความจำเพื่อให้เข้าถึงได้เร็วขึ้น

ใช่อาจปรากฏว่าคุณมีหน่วยความจำเพียง ~ 600 MB สิ่งที่ทำให้ระบบเปลี่ยนอาจไม่ใช่แอพพลิเคชั่นที่ใช้หน่วยความจำหมดจด แต่เป็นภาระงานหนัก I / O จำนวนมากที่กระทบกับบัฟเฟอร์ คุณสามารถระบุกระบวนการที่กำลังทำ I / O ทั้งหมดได้หรือไม่? คุณใช้เซิร์ฟเวอร์ทำอะไร


ในช่วงเวลาของการใช้งานหน่วยความจำต่ำที่เพียงโปรแกรมกราฟิกทำงานเป็น gdm3 ก่อนหน้านี้ (ก่อนที่ผู้ใช้จะออกจากระบบ) เดสก์ท็อป xfce กำลังทำงานโดยแทบไม่มีวิดเจ็ตใด ๆ และมีเพียงโครเมียมเบราว์เซอร์ที่แสดงบนตัวจัดการงาน เมื่อมันเกิดขึ้นอีกครั้งฉันจะใช้ไอโซโทปเพื่อค้นหากระบวนการที่เข้มข้นของ I / O ขอบคุณสำหรับคำแนะนำ
STenyaK

ความหนักเบาของ I / O ไม่ควรทำโดยการแลกเปลี่ยน คุณใช้เคอร์เนลหุ้นหรือไม่ ถ้าใช่จะต้องเป็นโปรแกรมผู้ใช้ที่มีหน่วยความจำรั่ว
Thorbjørn Ravn Andersen

ฉันพบว่า Chrome ใช้งานไม่ได้ค่อนข้างมากด้วย RAM เพียง 1 GB แน่นอนว่ามันเร็วและมี sandboxing ทำให้คุณจ่ายเงินสำหรับความทรงจำที่เข้มข้น แต่นั่นจะไม่อธิบายว่าทำไมระบบของคุณใช้ 900 MB สำหรับการแคช
จบแล้ว - Anony-Mousse

@ ThorbjørnRavnAndersenเคอร์เนลคือสต็อคหนึ่ง: 3.2.0-4-686-pae #1 SMP Debian 3.2.32-1 i686 GNU/Linuxความคิดใด ๆ ในการติดตามหน่วยความจำที่เป็นไปได้ที่จะรั่วไหลไปยังกระบวนการของผู้ริเริ่มเมื่อด้านบนไม่แสดงอะไรผิดปกติ?
STenyaK

1

ฉันไม่ทราบว่าเครื่องมือใดที่ให้ขนาด swap ในแต่ละกระบวนการ แต่มันก็ง่ายพอที่จะเขียนหนึ่ง ... (ดูตัวอย่างเชลล์สคริปต์เพิ่มเติม)

smemลินุกซ์มาพร้อมกับเครื่องมือที่มีชื่อว่า ในการติดตั้งภายใต้ Debian / Ubuntu คุณควรจะสามารถใช้งานได้ (มันจะติดตั้งแพ็คเกจหลามจำนวนมากในกระบวนการ):

apt-get install smem

จากนั้นให้ใช้เพียงพิมพ์smemบรรทัดคำสั่งของคุณ


อีกโซลูชันหนึ่งเพื่อค้นหาจำนวนการใช้ swap ปัจจุบันของกระบวนการคุณต้องการตรวจสอบพารามิเตอร์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

ในกรณีของฉันฉันเห็นว่า swap memory (VmSwap) ที่ใช้โดยกระบวนการนี้เพียงอย่างเดียวคือ 1968Kb เกือบ 2Mb

พารามิเตอร์ VmLib แสดงจำนวนหน่วยความจำที่ใช้สำหรับไลบรารีที่แบ่งใช้ (ไฟล์. so) แม้ว่ามันจะดูใหญ่ แต่จำไว้ว่าหน่วยความจำที่ใช้โดย shared library คือ ... shared ระหว่างกระบวนการทั้งหมด

ในเชลล์คุณสามารถดึงพารามิเตอร์ด้วยบรรทัดคำสั่งดังนี้:

#!/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 / สถานะจะหายไปเมื่อกระบวนการหยุดทำงานและการวนซ้ำไม่ได้ตรวจสอบอย่างถูกต้อง นอกจากนี้บางไฟล์ไม่สามารถอ่านได้โดยผู้ใช้ปกติ (เช่นถ้าคุณเป็นรูทคุณจะเห็นผลลัพธ์สำหรับแต่ละกระบวนการมิฉะนั้นกระบวนการบางอย่างจะส่งคืนข้อผิดพลาดหรือ 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

-1

การแลกเปลี่ยนเต็มดังนั้นคุณต้องหยุดกระบวนการบางอย่างเพื่อฆ่า กระบวนการที่ใช้ kill -9 PID และจากนั้นใช้ sudo swapoff -a

ในสภาพของฉันฉันหยุดคนทำงานด้านข้างของฉันแล้วจัดสรรหน่วยความจำ swap ใหม่

หน่วยความจำสลับเซิร์ฟเวอร์ digitalocean

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.