我觉得这有点重复关于使缓存更具侵略性的另一个问题,但我在那里尝试了很多建议,但我无法弄清楚为什么我遇到了麻烦。
我的情况是我在我的钥匙串上的一个小 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的/状态,因为这发生在每个 包,即使我尝试一次安装一堆)。 …
我正在将一些 Debian 机器从 i386 arch 升级到 amd64。这个过程相当简单:
所有这一切都进行得相当顺利,我已经能够编写有帮助的脚本,但后来遇到了一个问题:当我运行 aptitude 时,它认为我仍然想安装所有内容的旧 i386 版本(除了amd64 版本)。所以,我的能力屏幕看起来像这样:
ii iptables ...
pi iptables:i386 ...
ii iptraf ...
pi iptraf:i386 ...
Run Code Online (Sandbox Code Playgroud)
因此,像 iptables:i386 这样的软件包将显示为“已清除,但标记为安装”。这导致了数百次碰撞。到目前为止,我只是一一浏览并取消选择它们。我尝试使用“dpkg --set-selections”时运气不佳
所以,官方问题是:有人知道一个技巧来“取消安装标记”(在 aptitude 中)每个已经安装了 amd64 版本的软件包的 i386 版本吗?