Я изучаю конфигурацию виртуальной памяти экземпляра Amazon EC2 на базе Debian, и, поскольку у меня нет опыта работы с системным администратором, меня немного смущает то, что я вижу.
Мы используем MongoDB, и сервер мониторинга, который у нас есть, указывает, что процесс Mongo использует около 20 ГБ место подкачки виртуальная память, однако я не могу понять, где это находится на сервере.
Насколько я могу судить по различным методам, предлагаемым Google, их либо намного меньше, либо вообще нет.
top
указывает, что имеется 1,8 ГБ памяти подкачки:
top - 15:35:21 up 6 days, 3:23, 1 user, load average: 1.60, 1.43, 1.37
Tasks: 47 total, 2 running, 45 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 1.3%sy, 0.0%ni, 14.7%id, 83.8%wa, 0.0%hi, 0.0%si, 0.1%st
Mem: 3928924k total, 2855572k used, 1073352k free, 640564k buffers
Swap: 0k total, 0k used, 0k free, 1887788k cached
swapon -s
похоже, не думает, что есть место подкачки:
Filename Type Size Used Priority
free -m
тоже не думает, что есть своп:
total used free shared buffers cached
Mem: 3836 3663 172 0 626 2701
-/+ buffers/cache: 336 3500
Swap: 0 0 0
И тоже vmstat
:
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 3 0 66224 641372 2874744 0 0 21 5012 21 33 2 2 76 19
Но cat /etc/fstab
думает, что есть раздел подкачки:
/dev/xvda1 / ext3 defaults 1 1
/dev/xvda2 /mnt ext3 defaults 0 0
/dev/xvda3 swap swap defaults 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
тем не мение df -k
не показывает раздел xvda3:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/xvda1 16513960 15675324 0 100% /
tmpfs 1964460 8 1964452 1% /lib/init/rw
udev 1914148 28 1914120 1% /dev
tmpfs 1964460 4 1964456 1% /dev/shm
Так что я действительно не знаю, что с этим делать, потому что у меня есть процесс, использующий примерно в 10 раз больше виртуальной памяти, чем то, что мощь быть доступным, и я понятия не имею, где эта виртуальная память находится в системе.
Я, вероятно, неверно интерпретирую результаты работы инструментов, поэтому был бы признателен, если бы кто-нибудь смог меня прояснить: что я сделал не так, какова правильная интерпретация и как вы достигли этой интерпретации?
EDIT0: Мы используем MMS 10gen для мониторинга базы данных, соответствующий раздел для памяти из последней точки данных:
"mem": {
"virtual": 20749,
"bits": 64,
"supported": true,
"mappedWithJournal": 20376,
"mapped": 10188,
"resident": 1219
},
Этот JSON специфичен для процесса базы данных (я считаю), а не для системы в целом.
fdisk -l /dev/xvda
выводы ... ничего? Я пробовал каждую из трех записей xvda в /etc/fstab
также:
root@ip:~# fdisk -l /dev/xvda1
Disk /dev/xvda1: 34.4 GB, 34359738368 bytes
255 heads, 63 sectors/track, 4177 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/xvda1 doesn't contain a valid partition table
root@ip:~# fdisk -l /dev/xvda2
root@ip:~# fdisk -l /dev/xvda3
root@ip:~#
Edit1:
Выход cat /proc/meminfo
для полноты:
MemTotal: 3928924 kB
MemFree: 726600 kB
Buffers: 648368 kB
Cached: 2216556 kB
SwapCached: 0 kB
Active: 1945100 kB
Inactive: 994016 kB
Active(anon): 60476 kB
Inactive(anon): 12952 kB
Active(file): 1884624 kB
Inactive(file): 981064 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 387180 kB
Writeback: 0 kB
AnonPages: 73380 kB
Mapped: 1188260 kB
Shmem: 48 kB
Slab: 149768 kB
SReclaimable: 146076 kB
SUnreclaim: 3692 kB
KernelStack: 1104 kB
PageTables: 16096 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1964460 kB
Committed_AS: 305572 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 16760 kB
VmallocChunk: 34359721448 kB
HardwareCorrupted: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 3932160 kB
DirectMap2M: 0 kB
df
покажет вам только смонтированные файловые системы, а не пространство подкачки. swapon -s
или /proc/swaps
окончательный. В вашей системе нет места для подкачки.
Это выглядит как top
несколько обманчиво, поскольку ставит buffers
значение в той же строке, что и статистика памяти и cached
значение в той же строке, что и статистика свопа. buffer
и cache
оба относятся к памяти, используемой подсистемой хранения, и не имеют ничего общего с подкачкой. (Видеть этот ответ.) /proc/meminfo
немного удобнее для просмотра статистики памяти.
Пытаться mkswap /dev/xvda3
а потом swapon -a
. Но только если вы абсолютно уверены, что на / dev / xvda3 нет ничего ценного.