现在的位置: 首页 > 综合 > 正文

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

2013年02月24日 ⁄ 综合 ⁄ 共 2376字 ⁄ 字号 评论关闭

本系列的第 1 部分,我介绍了 PlayStation 3 (PS3)Linux 和它作为开发平台的优势和不足。本文是第二部分,介绍一些对运行 Linux 的 PS3 系统的性能会有显著影响的因素。

这里的建议并不适合所有人。如果您做的是图形处理,那么在运行系统的时候就不能没有 X。另一方面,如果你不需要图形处理,那么没有什么能比它更节省系统内存了。

如 果以前使用的都是桌面系统,从来没有装入过交换(swap)驱动,那么本文对内存的重视看起来可能有些奇怪。但是实际上,PS3 本身并没有足够的内存,因此无法顺畅地运行现代的桌面 Linux 系统。在默认的 Fedora 7 安装中,系统在内存交换上花了许多时间(是您的时间)。内存交换对于任何系统都有很大的影响。对于使用 2.5 英寸硬盘的系统,对硬盘的访问通过 hypervisor 进行,它的主内存速度要比多数桌面系统的内存快得多,正因如此,与传统桌面系统的对比才更显得突出。

另 一项提示:在我的测试系统上,在原始安装的 2.6.21 内核下的重新启动不稳定。2.6.23 内核修正了这问题,可以使用 PS3 增件 CD 中的版本,或者使用来自标准 Fedora 升级的版本。一般来说,来自 PS3 增件 CD 的内核可能是最佳选择。

降低内存消耗

这 个主题的重要性恒久不变。对于多数桌面 Linux 用户来说,需要自己动手来减少内存的消耗,这已经是很久以前的事情了。而且,因为进程的增长会占满可用空间,所以即使只有 64 MB 主内存的服务器也被当成功能强大的服务器,实际上只是上面没有运行太多软件,所以不需要许多内存开销。虽然 PS3 系统不是个省内存的系统,但 Fedora 7 也不是为小内存系统设计的,虽然它很迷人。

为了减少内存消耗,先要找出内存的消耗大户。方法之一是使用 top 命令,它会实时地显示系统上的进程。默认情况下, top 按 CPU 使用情况排序显示进程,这对另外一种性能调优有用,但对跟踪内存大户来说并不是最佳途径。请注意 top 提供了内存使用情况汇总。例如,在运行 X 但关闭了一些服务的的 PS3 上,我得到这个结果:

清单 1. 我真的用了这么多内存么?

                
Mem: 219192k total, 213692k used, 5500k free, 7232k buffers
Swap: 4192956k total, 0k used, 4192956k free, 89468k cached

还是使用 top(就是在 shell 中运行 top 命令),然后输入 O(这是个大写的 O,意思是 “按……排序”),然后输入 q,然后按 回车键。在这种情况下,q 表示 “驻留大小”,会显示进程实际使用的内存数量。另一个可以使用的选项是 “虚拟内存”(选项 o)。

现在应该看到一个进程列表,按照物理内存的实际使用情况排序。下面是部分列表,同样也来自测试机。

清单 2. 我猜我确实是用了这么多内存

                
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3259 root 20 0 65424 36m 4996 S 2 17.2 0:01.39 Xorg
3422 seebs 20 0 92900 24m 20m S 0 11.6 0:01.22 nautilus
3439 seebs 20 0 58600 24m 22m S 0 11.5 0:00.36 nm-applet
3473 seebs 20 0 56620 24m 14m S 0 11.4 0:01.22 /usr/bin/sealer
3420 seebs 20 0 50248 21m 18m S 0 10.2 0:01.90 gnome-panel
3476 seebs 20 0 48988 14m 10m S 1 6.9 0:00.64 gnome-terminal
3445 seebs 20 0 33104 14m 9464 S 0 6.7 0:00.40 puplet
3453 seebs 20 0 45764 13m 12m S 0 6.4 0:00.22 gnome-power-man
3414 seebs 20 0 41920 9696 8052 S 0 4.4 0:00.29 gnome-settings-
3418 seebs 20 0 22200 8996 7316 S 0 4.1 0:00.33 metacity
3297 seebs 20 0 40544 8384 7088 S 0 3.8 0:00.32 gnome-session
3432 seebs 20 0 20076 6120 5244 S 0 2.8 0:00.10 bluetooth-apple
3444 seebs 20 0 14692 6060 3532 S 0 2.8 0:00.24 python

排 前十位左右的内存大户都是与 X 相关的。这就是为什么如果真的想释放内存,要做的第一件事可能就是关闭 X。由于注意到许多应用程序是特定于 GNOME 的,所以您可能想试试 KDE,但是我想恐怕不会有效果。KDE 在 PS3 上的内存开支与 GNOME 不相上下。

实际上,如果绝对需要 X,那么最好是不使用 X 登录窗口提供的 X 会话环境,改用控制台登录,然后用小一些的窗口管理器和少一些的附加程序来启动 X。但是如何做到这点呢?首先是退出 top,回到提示符—只要按 q 即可。



回页首

利用运行级(runlevel)

运行级是许多 Linux 用户都没有机会了解的一项特性。它们实际上继承自 System V UNIX®,当然也有一些区别。运行级 是定义好的一套并行运行的系统服务。由于历史原因,常用的桌面 Linu 环境带有生成 Gnome 或 KDE 的图形登录应用程序,这种环境称为运行级 5。传统的没有 X 的独立工作站通常在运行级 2 下运行。在理论上,可以使用 /sbin 目录下的 init 命令直接修改系统的运行级。例如,(以 root 身份)运行 /sbin/init 2,就是告诉系统转移到运行级 2(通常这是通过中断运行级 2 不使用的服务,然后启动运行级 2 上使用的服务来完成的)。

默认的运行级由 /etc/inittab 文件中的一行设置,这一行看起来像下面这样:

 

本文转自IBM Developerworks中国
    请点击此处查看全文

抱歉!评论已关闭.