crabhero 发表于 2012-10-12 02:25:30

raspberry pi从USB启动提升性能,增加可玩性

raspberry pi从USB启动提升性能,增加可玩性


http://i2cq.com/2012/10/1768

希望有条件的朋友测试下 从usb hub上启动,以及usb 3.0 硬盘启动性能

ksal528 发表于 2012-10-12 08:16:41

这个网址好像被墙了!!

我来复制粘贴一下吧




r-pi的启动是通过读取SD卡上/boot分区,参看其中的配置文件参数来启动系统。办法就是修改cmdline.txt中的/root位置 (/boot分区fat格式,windows可读)

dwc_otg.fiq_fix_enable=1 sdhci-bcm2708.sync_after_dma=0 dwc_otg.lpm_enable=0
console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait
其中 root=/dev/mmcblk0p2 改为 U盘上的根分区 root=/dev/sda2
我的U盘写入的是另外一个系统,两个分区,sda1为/boot,sda2为/,自行重分区可以去掉这个/boot只要一个/就行。可以理解为PC系统上的主板Bios就是这个SD卡上的/boot分区,启动盘就是指向的USB设备。

这是我的分区结构
pi@raspberrypi:/boot$ df
Filesystem             1K-blocks          Used            Available      Use%      Mounted on
rootfs               1804128         1357844       354636         80%         /
/dev/root            1804128         1357844       354636         80%      /
devtmpfs 62028 0 62028 0% /dev
tmpfs 12420 220 12200 2% /run
tmpfs 5120 0 5120 0% /run/lock
tmpfs 24820 0 24820 0% /run/shm
/dev/mmcblk0p1    76630         37254         39376             49%       /boot
可以看到,SD卡mmcblk0p1就是sd卡上那个/boot分区,修改掉的cmdline.txt文件也在其中。U盘包含了真个系统,所有读写都在U盘上和SD卡无关。



pi@raspberrypi:/boot$ sudo dd if=/dev/mmcblk0p1 of=/dev/null bs=8k count=10000
9600+0 records in
9600+0 records out
78643200 bytes (79 MB) copied, 6.54728 s, 12.0 MB/s

SD卡读取速度12MB/s

pi@raspberrypi:/mnt$ sudo dd if=/dev/sda2 of=/dev/null bs=8k count=10000
10000+0 records in
10000+0 records out
81920000 bytes (82 MB) copied, 3.61226 s, 22.7 MB/s

U盘读取速度22.7MB/s 几乎是前者两倍
为何要这样做一目了然,使用U盘上的系统大大提升了系统磁盘性能。另外SD卡因为兼容性问题,不少的卡无法使用,同时速度达不到原本的性能,比如UHS-I超Class10规范的卡在raspberry pi上常常只能获得20MB/s不到的速度,而usb就没有兼容性问题,特别是usb 3.0开始普及的年代,向下兼容的特性就算在usb2.0上,写入也能超过20,读取达到40以上。另外SD卡槽相对来说比较易损,usb可以通过延长线提高接口物理寿命。U盘价格偏低,寿命比SD卡稍好。

另外可以使用USB外置硬盘作为系统,那性能将无可匹敌,不再成为瓶颈。

值得注意的是,一些官方系统中的脚本命令没有指向USB设备,需要用sed命令临时修改指向,比如raspi-config中自动重新分区扩容
cp /usr/bin/raspi-config ~
sed -i 's/mmcblk0p2/sda2/' ~/raspi-config
sed -i 's/mmcblk0/sda/' ~/raspi-config
sudo ~/raspi-config


我另外还想拥有一个功能,就是不插U盘的时候自动启动SD卡上的系统,插U盘的时候就启动U盘上的系统,这估计要修改内核重新编译了。不过可以另外一个角度来解决。选用一个带usb接口开关的usb hub,SD卡指定从U盘启动,一排带系统的U盘都插在上面,要哪个系统就开那个开关,其他关闭就行,这个可以有。

ksal528 发表于 2012-10-12 08:17:36

rsap_wu 发表于 2012-10-12 09:16:53

写得不错,顶一下

doyle 发表于 2012-10-12 09:23:02

收藏,回去折腾

沙渺 发表于 2012-10-12 09:51:44

不看好啊。

USB总线太繁忙了。连在PC机的USB总线上多挂点设备都会慢,树莓派用USB总线作为日常读写?我有点担心这么做的性能啊。

USB最大的用途其实还是挂硬盘作为数据仓库用。如果当做BT/HTTP下载机,这个必不可缺。至于别的,没大必要。

topzdx 发表于 2012-10-12 13:06:00

支持USB, 更想要的是不要SD,直接优盘起系统.
很多发行版都有把LIVE系统装到U盘上的功能

crabhero 发表于 2012-10-12 15:24:58

回 ksal528 的帖子

ksal528:这个网址好像被墙了!!

我来复制粘贴一下吧


....... (2012-10-12 08:16) images/back.gif

不是吧,我的博客你们访问不了?服务器在香港而已啊

crabhero 发表于 2012-10-12 15:31:18

回 沙渺 的帖子

沙渺:不看好啊。

USB总线太繁忙了。连在PC机的USB总线上多挂点设备都会慢,树莓派用USB总线作为日常读写?我有点担心这么做的性能啊。

USB最大的用途其实还是挂硬盘作为数据仓库用。如果当做BT/HTTP下载机,这个必不可缺。至于别的,没大必要。 (2012-10-12 09:51) images/back.gif

这个就要看实际应用的测试情况了。不过SD卡由于速度瓶颈明显,特别是tmp缓存分区也在上面,就大大影响了系统的响应速度。CPU资源有限的确需要考虑。

raspwhat 发表于 2012-10-12 20:16:20

呀,那买个usb3的hub就更值得了。
页: [1] 2
查看完整版本: raspberry pi从USB启动提升性能,增加可玩性