在运行 Virtual Box 时,我的系统大量访问硬盘并且运行缓慢。
当我使用系统监视器检查系统资源时,它显示处理器使用率为 15%,RAM 使用率为 65%,交换使用率为 50% 左右。
我的问题是,当有足够可用的主内存时,为什么 ubuntu 需要使用 Swap?
编辑 -
命令输出free
-
total used free shared buffers cached
Mem: 4075908 3056931 1018977 0 1944 308408
-/+ buffers/cache: 2746579 1329329
Swap: 4139004 1862551 2276453
笔记 -12.04 Precise
在我升级到 之前,虚拟盒似乎运行良好12.10 Quantal
。现在它太慢了,几乎没用。
答案1
swappiness 参数控制内核将进程从物理内存移出并移至交换磁盘的趋势。由于磁盘比 RAM 慢得多,因此如果进程过于频繁地移出内存,这会导致系统和应用程序的响应时间变慢。
swappiness can have a value of between 0 and 100 swappiness=0 tells the kernel to avoid swapping processes out of physical memory for as long as possible swappiness=100 tells the kernel to aggressively swap processes out of physical memory and move them to swap cache
Ubuntu 中的默认设置是 swappiness=60。降低 swappiness 的默认值可能会提高典型 Ubuntu 桌面安装的整体性能。
在启动 virtualbox 之前打开终端并粘贴此内容:
sudo sysctl vm.swappiness=10
启动可视化并检查交换使用量是否减少,如果是的话,则在终端中执行以下命令:
gksu gedit /etc/sysctl.conf
它会要求您输入密码,输入密码后屏幕上会出现一个文本编辑器,一直向下滚动并在最后一行后添加:
vm.swappiness=10
保存文件并重新启动计算机。
这应该够了吧!
答案2
但是你不有足够的内存。在第一列中,可用的总内存量为 4075908。除缓存和缓冲区外,程序实际使用的内存量为 2746579。交换中的 RAM 量为 1862551。
这意味着实际使用的内存量为 2746579+1862551,等于 4609130。通常,完整的内存块和分配给程序的内存都会被换出,这是最有效的方式。
底线是,您需要比实际拥有的 RAM 多 4609130-4075908 或 533222 Mb。
查看您为当前正在运行的虚拟机分配了多少内存,以及您可能正在运行的其他程序对 RAM 的要求。有时少即是多 - 如果您减少分配给虚拟机的 RAM 量,那么您将不会进行交换,性能将好得多。