在 PlayStation 3 上进行 Linux 开发,第 2 部分:内存操作
2008-05-25 15:32
387 查看
在 本系列的第 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 也不是为小内存系统设计的,虽然它很迷人。
为了减少内存消耗,先要找出内存的消耗大户。方法之一是使用
清单 1. 我真的用了这么多内存么?
还是使用
现在应该看到一个进程列表,按照物理内存的实际使用情况排序。下面是部分列表,同样也来自测试机。
清单 2. 我猜我确实是用了这么多内存
排 前十位左右的内存大户都是与 X 相关的。这就是为什么如果真的想释放内存,要做的第一件事可能就是关闭 X。由于注意到许多应用程序是特定于 GNOME 的,所以您可能想试试 KDE,但是我想恐怕不会有效果。KDE 在 PS3 上的内存开支与 GNOME 不相上下。
实际上,如果绝对需要 X,那么最好是不使用 X 登录窗口提供的 X 会话环境,改用控制台登录,然后用小一些的窗口管理器和少一些的附加程序来启动 X。但是如何做到这点呢?首先是退出
利用运行级(runlevel)
运行级是许多 Linux 用户都没有机会了解的一项特性。它们实际上继承自 System V UNIX®,当然也有一些区别。运行级 是定义好的一套并行运行的系统服务。由于历史原因,常用的桌面 Linu 环境带有生成 Gnome 或 KDE 的图形登录应用程序,这种环境称为运行级 5。传统的没有 X 的独立工作站通常在运行级 2 下运行。在理论上,可以使用 /sbin 目录下的
默认的运行级由 /etc/inittab 文件中的一行设置,这一行看起来像下面这样:
本文转自IBM Developerworks中国
请点击此处查看全文
这里的建议并不适合所有人。如果您做的是图形处理,那么在运行系统的时候就不能没有 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 登录窗口提供的 X 会话环境,改用控制台登录,然后用小一些的窗口管理器和少一些的附加程序来启动 X。但是如何做到这点呢?首先是退出
top,回到提示符—只要按 q 即可。
|
运行级是许多 Linux 用户都没有机会了解的一项特性。它们实际上继承自 System V UNIX®,当然也有一些区别。运行级 是定义好的一套并行运行的系统服务。由于历史原因,常用的桌面 Linu 环境带有生成 Gnome 或 KDE 的图形登录应用程序,这种环境称为运行级 5。传统的没有 X 的独立工作站通常在运行级 2 下运行。在理论上,可以使用 /sbin 目录下的
init命令直接修改系统的运行级。例如,(以 root 身份)运行
/sbin/init 2,就是告诉系统转移到运行级 2(通常这是通过中断运行级 2 不使用的服务,然后启动运行级 2 上使用的服务来完成的)。
默认的运行级由 /etc/inittab 文件中的一行设置,这一行看起来像下面这样:
本文转自IBM Developerworks中国
请点击此处查看全文
相关文章推荐
- 在 PlayStation 3 上进行 Linux 开发,第 3 部分: 采用小工具来瘦身 X11
- 使用 Java 进行 MySQL 开发 (摘自:MySQL for Linux on POWER,第 2 部分: 开发应用)
- 【Linux开发】linux设备驱动归纳总结(五):2.操作硬件——IO内存
- Linux 字符设备驱动开发--内存读写操作
- 开发环境入门 linux基础 基本操作命令(部分) 文本结构和基本命令
- 使用实时 Java 进行开发,第 2 部分: 改善服务质量
- 结合 Ajax 进行 PHP 开发,第 2 部分: 后退、前进和刷新
- 开发环境入门 linux基础 (部分) 复制 用户和组操作 权限更改
- linux下用python进行opencv开发----简单的图片操作
- 浅析 Linux 初始化 init 系统,第 2 部分: UpStart(转)
- 在 Linux 下用户空间与内核空间数据交换的方式,第 2 部分: procfs、seq_file、debugfs和relayfs
- 67.文件映射为内存进行操作与多线程 以及 文件映射到内存根据索引进行内存来实现读取多线程操作
- 用 WEKA 进行数据挖掘,第 2 部分: 分类和群集
- Linux Java开发坏境搭建,Ubuntu-jdk+tomcat+eclipse+svn 包安装详细操作
- Linux驱动开发常用内存调试工具 memtool and devmem
- JavaWeb开发 html点击图片某区域进行操作
- 嵌入式开发第八日(linux内存起源,内存的分布)
- 如何在Linux系统下进行C++程序开发
- C# 可否对内存进行直接的操作?
- 浅析 Linux 初始化 init 系统,第 1 部分: sysvinit 第 2 部分: UpStart 第 3 部分: Systemd