调整 Tux,第 4 部分

作者:Marcel Gagné

在这一期中,我想回到一些基础知识。  你如何读取系统的想法? 你如何知道老 Tux 是否有点压力过大? 我们已经了解了 uptimetop。 我暗示过(实际上,我可能已经说过)top 的问题之一是它过于重量级 (咳咳)。  当你运行它时,程序本身通常是最活跃和最消耗资源的进程。  这就需要更轻量级和更快速的东西。  我向你展示了一个叫做 free 的东西来引起你的兴趣。  现在,我将向你展示一些其他的东西。

这个小命令几乎在各种形式上都无处不在,因为你可以在大多数 UNIX 系统(当然包括 Linux)上找到它。  它代表了另一种查看当前 CPU 使用率的方法——它被称为 vmstat。  (啊,命令行万岁!)  该命令的格式是 vmstat 间隔秒数 间隔次数。  在以下示例中,我每 2 秒采样一次,共 5 次迭代。

 # vmstat 2 5
  procs                     memory  swap    io     system     cpu
 r  b  w  swpd   free  buff  cache si so bi bo   in  cs us sy  id
 0  0  0  14004  2288  2960  22992  0  0  1  1   21  23  4  3  16
 0  0  0  14004  2168  2968  23104 28  0 15  0  225  18  3  2  94
 0  0  0  14004  2168  2968  23104  0  0  0 23  285   9  2  1  97
 0  0  0  14004  2168  2968  23104  0  0  0  0  105   9  1  2  97
 0  0  0  14004  2168  2968  23104  0  0  0  3  125  10  1  2  97

让我们更详细地看看 vmstat,包括你可以从其他列中解读出的信息。  注意 "us"、"sy" 和 "id" 列。  它们分别代表 CPU 时间用于处理用户程序或请求的百分比 (us);CPU 时间用于处理系统任务的百分比 (sy),例如等待 I/O、更新系统统计信息、维护优先级以及所有其他系统任务;以及 CPU 时间完全空闲的百分比 (id)。  如果你的电脑是人类,它现在应该在翻阅 电视指南。  这应该看起来很熟悉——这是 top 在其 “CPU 状态” 标题中显示的另一种表示形式。(有关 top 的讨论,请参阅上周的专栏。)

为了让数字真正有意义,你应该定期采样或让 vmstat 运行多次迭代,例如 vmstat 1 20。  使用 vmstat 1 1 进行一次传递 不会 告诉你任何有价值的东西。  假设你持续看到 "us" 列处于高百分比,"sy" 占用剩余部分,并且几乎没有空闲时间。  我们可能会猜测(记住,有很多因素)系统任务过载。  本质上,系统除了服务任务之外什么都不做,无论是系统任务还是用户任务。

磁盘 I/O 是任何系统的巨大瓶颈。  为了简单起见,此时我不会深入探讨像 CD-ROM 这样的可移动介质。  由于这个瓶颈,任何影响磁盘访问时间的事情都会对你的系统产生重大影响。  例如,对内存的需求可能会导致你的系统大量交换,这可能会导致你的磁盘 抖动,因为信息页面开始在内存和磁盘之间疯狂地来回跳动。  让我们看一下另一个 vmstat 输出。

     # vmstat 2 5

      procs                      memory    swap          io     system         cpu
    r  b  w   swpd   free   buff  cache  si  so    bi    bo   in    cs  us  sy  id
    1  0  0   3684   1120   1308  25692   0   1    19     2  267  1270   8   3  89
    1  0  0   3684   1376   1308  25052   0   0  2687     0  172  2483  19  15  67
    1  0  0   4172   1412   1308  25408   0 488  3230   122  205   346   2   6  92
    1  0  0   4168    724   1308  24768   0   0  1417     0  180   699  24   5  71
    1  0  0   4300    548   1308  25376   0 132  2528    33  204  2790  13   3  84

这是一个正在发生一些有趣事情的系统。  “r” 列显示当前在运行队列中的进程数。  “w” 告诉我没有进程被交换出去。  这是一件好事。  事实上,这个数字(理想情况下)应该始终为零。  看一下 “swap” 列组(si 和 so),你会看到我们开始使用越来越多的交换空间。  随着正在发生的事情继续发生,“free” 列正在迅速缩小。  系统面临真实内存短缺,开始将大量内存交换到磁盘。  你可以在 “si” 和 “so” 列中看到这种活动,这可以很好地指示你的系统在内存方面的情况。  “si” 列指的是从磁盘交换 进入 的内存量,而 “so” 是交换 磁盘的内存量。  那是内存,不是 进程。  当你看到这个时,你不应该立即惊慌。  这种交换进出是一种非常常见的现象,尤其是在你第一次启动大型应用程序(例如巨型文字处理程序?)时。  当一切加载完成时,你会看到这些数字再次稳定下来。  一些真实内存将被释放,并且已使用的虚拟内存 (swpd) 可能会略高一些。  当你开始达到虚拟内存的上限并且 “si/so” 活动似乎永远不会稳定下来时,真正的问题就会变得明显。

密切关注这些数字很重要,尤其是在你的系统被其他人使用时。  当然,如果情况变得足够糟糕,他们会让你知道,但这不是最好的方法。  使用像 vmstat 这样的工具,你可以随着系统使用量的增加而发现长期趋势。(它会减少吗?)  考虑一个 crontab 条目,它定期运行 vmstat 并将信息输出到文件。  然后,让另一个作业(在夜间某个时间)通过电子邮件发送报告文件,删除旧日志,并准备好第二天重新开始。

在我们继续讨论其他内容之前,让我们重新审视 hdparm。  大多数人的反应都是普遍的 “哇!”(除了 Mandrake 7.1 用户指出 hdparm 的一些调整已经合并到该版本中)。  一些读者问我,一旦他们有了可用的 hdparm 命令,该如何处理,因为这些设置在重启时会丢失。  当然,你不想每次重启都输入它们(两次重启之间可能间隔很长时间,以至于系统管理员可能会忘记曾经做过的所有更改)。  让我们花一点时间看看一些可能用于调整 hdparm 的命令。

   # /sbin/hdparm -c3 /dev/hda   # /sbin/hdparm -d1 /dev/hda

你也可以使用以下命令将其变成一个命令

     # /sbin/hdparm -c3 -d1 /dev/hda

如果事实证明这两个命令(或一个)对你的系统性能产生了预期的效果(即,磁盘速度更快),那么你需要将它们添加到你的启动脚本中。  使用你喜欢的编辑器,将该命令添加到你的 rc.local 文件中。  在我的系统上,确切的文件是 /etc/rc.d/rc.local。  现在,这个例子来自 Red Hat 系统,rc.local(或其等效文件)的位置因系统而异。  如果你需要对此进行复习,请查看 调整 Tux,第 II 部分,了解有关查找启动文件的详细信息,无论系统如何。

是时候找点乐子了。  是的,我知道,这一切都很有趣;但这只是纯粹的乐趣,同时仍然有用(仍然困惑?)。  无论如何,我如此热爱 Linux 的原因之一是总有一些开源开发人员在那里努力使我们使用的程序更有用、更强大或更友好,同时 保持价格低廉。  性能监控也是如此。

这有点奇怪,但是过了一段时间,你会发现自己一直想要这些信息——就好像了解你的系统运行状况成为了一种瘾。  小型图形工具可以很好地让你一目了然地掌握这些信息。  我倾向于运行 KDE(2.0 看起来很棒!)或 WindowMaker 作为我的桌面。  我特别喜欢 WindowMaker 的那些可停靠的小程序,占用桌面空间几乎为零的小程序。  事实上,即使在使用 KDE 时,我也一直在运行这些小程序。  为了快速进行系统性能分析,我使用了一个名为 wmmon 的东西。

只需单击一下,小程序就会从 CPU 利用率切换到 I/O 统计信息,然后切换到组合显示,显示 内存交换运行时间。  它简单而美观。  WindowMaker 网站上有 wmmon 的二进制文件(和源代码)。  (我承认我对这些小巧、桌面空间友好的应用程序产生了相当的喜爱。)  要启动该程序,只需键入 wmmon &

Tweaking Tux, Part 4

快速提示时间。  如果你正在从 KDE 运行它(就像我经常做的那样),并且你想将程序放置在桌面上的其他位置,你会很快注意到完全没有标题栏可以抓住。  你需要按住 “Alt” 键,同时单击 vmmon 显示以将其拖动到位。

wmmon 的另一个变体,一个名为 WMgMon (WindowMaker Generic Monitor) 的程序,可以在 http://www.caesium.fr/freeware/wmgmon/ 找到。  这个程序的酷之处在于它会在各种模式之间闪烁,每隔几秒钟在各种模式之间交替显示。  WMgMon 甚至会显示你的邮箱状态。  它也是可配置的,允许你修改显示间隔以及应用程序实际显示的内容。  你必须从源代码编译 WMgMon,但这非常容易。

     tar -xzvf wmgmon-0.3.0.tar.gz
     cd wmgmon.app
     make
     cp bin/wmgmon /usr/local/bin

然后,只需键入 wmgmon & 即可运行该程序。  在 wmgmon.app/doc 目录中有一些文档(但只有一点点)。  如果你想修改程序默认值,请查看它。

Tweaking Tux, Part 4

最后,还有那个老朋友,xosview,一个 X-Windows 应用程序,可能已经安装在你的系统上。  xosview 是一个 X-Windows 程序,它以数字方式和小型的超活跃条形图显示 CPU 活动、I/O、负载平均值、内存使用率和交换。  它甚至通过底部的小闪烁灯来闪烁设备访问中断。

如果你碰巧你的发行版没有它,你总是可以从 http://www.ibiblio.org/pub/Linux/system/status/xstatus/xosview-1.7.1.tar.gz 下载它。

编译该程序是标准操作。

     tar -xzvf xosview -1.7.1.tar.gz
     cd xosview-1.7.1
     ./configure
     make
     make install

我已经唠叨得够多了,本周就到此为止,所以我要说“感谢光临系统管理员专栏”。  下次见,  给 Tux 调整一下。 你们俩都可能会喜欢它。

电子邮件:ljeditors@ssc.com

加载 Disqus 评论