交换文件/分区在哪里?

我正在调查基于Debian的Amazon EC2实例的虚拟内存configuration,由于我的背景不在系统pipe理员中,所以我对所看到的有点困惑。

我们使用的是MongoDB,而我们的监控服务器表明Mongo进程使用了​​大约20GB的交换空间虚拟内存 ,但是我无法弄清楚它在服务器上的位置。

据我所知,使用Google提供的各种build议方法,数量要么less得多,要么根本没有。

top表示有1.8GB的交换内存:

 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---- rb 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 :我们使用10gen的MMS来监控数据库,从最后一个数据点开始内存的相关部分是:

  "mem": { "virtual": 20749, "bits": 64, "supported": true, "mappedWithJournal": 20376, "mapped": 10188, "resident": 1219 }, 

这个JSON是特定于数据库过程(我相信),而不是整个系统。

fdisk -l /dev/xvda输出…什么都没有? 我也尝试了/etc/fstab中的3个xvda条目:

 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:~# 

编辑1

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值放在同一行。 buffercache都指的是存储子系统使用的内存,与swap没有任何关系。 (看到这个答案 。) /proc/meminfo对于查看内存统计信息有点友善。

尝试mkswap /dev/xvda3 ,然后swapon -a 。 但是只有当你确定在/ dev / xvda3上没有任何价值的时候。