在 PlayStation 3 上进行 Linux 开发,第 2 部分: 内存操作

http://tech.ddvip.com   2008年06月11日    社区交流

内容摘要:索尼的 PlayStation 3(PS3)能运行 Linux®,但是要运行良好,还需要做些调整。本篇文章是 本系列 的第二篇文章,在这篇文章中 Peter Seebach 研究了大量耗用内存的地方,以及如何找回内存。

  编辑运行级

  糟糕的是,没有一个特定的运行级是 “没有 yum-updatesd 的运行级 3”。这意味着现在需要开始手工删除服务。有两种方法可以手工删除服务。每个运行级都由 /etc/rc.d 中名为 rcN.d 的目录定义;例如,运行级 3 由 /etc/rc.d/rc3.d 中的文件定义(在 Fedora 7 系统上,在 /etc 中还有到这些目录的符号链接,但是使用完整路径是个好习惯)。

  这类目录中,每个目录都包含许多文件,文件名有些神秘,例如 “K74nscd” 或 “S88nasd”。命名规范很简单:用 K 开始 的名称是进入该运行级时要停止的服务(假设从高运行级进入,在高运行级中可能正在使用它们),用 S 开始的名称是进入该运行级时要运行的服务。两位数字用来对服务排序,S13rpcbind 在 S14nfslock 之前启动,它们都在 S25netfs 之前依次启动。简单而且有效。

  实际上,这些通常并不是文件,而是到 /etc/rc.d/init.d 中存储的脚本的符号链接。通常只有一个脚本负责启动或停止指定服务,然后做出相应的链接。当 init 修改运行级时,分别用 “start” 或 “stop” 参数调用脚本。

  如果觉得这些操作太复杂,有些眼花缭乱,那么只要从运行级目录中删除不需要的 S 或 K 链接即可。类似的,也可以添加新的链接。另一个选项是使用 chkconfig 工具程序;这是个非常灵活和强大的工具,能够维护这些符号链接。提示:如果删除了重要的内容,可能必须使用恢复 CD才能再次干净地引导系统。在删除之前,请确定清楚这些东西是什么,有哪些内容依赖它们。

  例如,如果想从运行级 2 删除 yum-updatesd 程序,只要删除链接 /etc/rc.d/rc2.d/S97yum-updatesd 即可。要用 chkconfig 从运行级 2 删除它,应该使用的命令是 /sbin/chkconfig yum-updatesd off。

  跟踪更多空间

  使用 chkconfig 和 top 这两个命令,可以跟踪很多大内存用户,了解它们提供了什么,如果不需要的话就可以删除它们。但是 Python 进程是怎么回事?没有 Python 服务啊!ps 命令揭示了更多内幕:

  清单 5. 跟踪 Python

   $ ps ax | grep python
   1825 ?    S   0:00 python ./hpssd.py

  对启动脚本进行 grep 处理,能够看出 python 是 hplip 的一部分,hplib 提供了 “HP Linux 图形和打印” 服务。对于有些 HP 打印机和扫描仪来说这可能有用,但在其他地方可能并不需要。所以,如果还没有关闭这个服务,现在请关闭它。

  在相当典型的专用开发系统上,最终合计使用的内存是 49,896KB,而开始时则为 213,692KB。可用内存也从 5,500KB 上升到 169,296KB — 对于运行编译器的空间是一个显著的改善。这个改善带来的效果取决于您的工作负载;许多后台守护程序,一旦被交换出内存,就会一直保持换出状态,使得系统的响应性提高。但是,时间一久,编译时间上的微小差异也会累积成明显的差异。

  接下来如何?

  可以看到,如果愿意牺牲一些不必要或者不使用的特性,那么能够回收大量系统内存,留出足够的内存来运行编译器和开始开发代码。但是,许多用户可能发现完全不使用 X 的代价太大。本系列的下一篇文章将介绍如何获得一个可以使用的 X 环境,执行一些简单的图形工作,同时又不损失执行编译器的能力。

来源:ibm    作者:Peter Seebach    责编:豆豆技术应用

正在加载评论...