如何调整 Ubuntu 以从闪存驱动器运行?

Jem*_*ake 5 linux ubuntu cache

我觉得这有点重复关于使缓存更具侵略性的另一个问题,但我在那里尝试了很多建议,但我无法弄清楚为什么我遇到了麻烦。

我的情况是我在我的钥匙串上的一个小 USB 闪存驱动器上安装了 Ubuntu 12.10。(当我需要拯救某人的 PC 或想要拥有自己的桌面以及我自己的设置和书签等时,我会使用它,无论我发现自己在什么 PC 面前)。

问题是系统非常慢。

现在,USB 闪存驱动器相当慢,所以我知道我必须做出一些让步。但是,我目前正在尝试在具有8GB RAM的 i7 机器上运行它。“free”和“top”都报告系统使用的空间少于2.7GB ...

          total     used     free   shared    buffers   cached
Mem:       7712     2742     4969        0        164     1838
-/+ buffers/cache:   740     6972 
Swap:         0        0        0
Run Code Online (Sandbox Code Playgroud)

...和“df”告诉我文件系统正在使用4.4GB。因此,应该有足够的剩余 RAM 来缓存整个文件系统

基于此,我认为我遇到的唯一 I/O 延迟应该仅限于第一次将文件读入缓存所需的时间。在那之后,我认为它不需要再次获取它们,并且所有写入都可以缓存在后台,所以我根本不必等待它们。(当然,最大的等待可能是当我想关闭时,需要将 4GB 的脏缓存写入闪存)。

但是,这根本不是我所经历的。相反,一切都非常缓慢。将焦点切换到其他窗口会导致所有窗口“变暗”约 10 秒(对于此任务,窗口管理器需要什么,从磁盘中,它肯定不会写入那里?如果它在窗口会话的早期编写它,为什么不在缓存中?),并且在 .deb 文件下载执行诸如使用 apt-get 安装某些内容需要几分钟的时间(该 .deb 怎么不在缓存中) ?如何从没有被写入包中的新文件缓存?而且这不是安装程序是不必去阅读的/ var / lib中/ dpkg的/可用或/ var / lib中/ dpkg的/状态,因为这发生在每个 包,即使我尝试一次安装一堆)。

我已经对/proc/sys/vm/vfs_cache_pressure, 进行了修补/proc/sys/vm/swappiness, /proc/sys/vm/dirty_writeback_centisecs/proc/sys/vm/dirty_ratio... 但没有任何显着影响。

我不清楚 Linux 磁盘缓存是如何工作的。所以,填补我进去。可以在内核配置(提供它有它足够的RAM):

  1. 从磁盘读取文件一次,然后将它们缓存,并且
  2. 缓存所有写入并在空闲期间将它们写入磁盘(如果那是 20 分钟后,很好)?

而且,如果它可以做到这一点,我错过了什么?

slm*_*slm 2

USB 拇指驱动器原始性能

首先,我会看一下 USB 拇指驱动器,以确保它以可接受的水平运行。您可以使用以下 2 个命令来测量其性能:

$ hdparm -t /dev/sdb

$ dd count=100 bs=1M if=/dev/zero of=/media/disk/test oflag=sync
Run Code Online (Sandbox Code Playgroud)

替换为您给定设置的适当硬盘信息。

文件系统

另请参阅Ubuntu 帮助网站上有关提高 USB 拇指驱动器性能的文章。

参考