到底 galaxy s 點做 lagfix?

lag 到忍無可忍…

搜 google 多到暈…

我無 USB 線有無得搞?

會不會無保養?

我現在的版本是
Baseband I9000ZSJPE
2.6.32.9 root@SE-S506 #3
FROYO.ZSJPD
你應該問高登一眾軟件工程師
I dunno how to say, but...... i just want to say I love you~
Samsung app 有個叫snap go 幾好用,只要開住wifi,對desktop 想dl既sw指照就會由pc 過去mobile

[/URL]
以小弟非常有限的 linux 知識,終於明明地發生咩事…


# cat mounts
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
/dev/block/stl6 /mnt/.lfs j4fs rw,relatime 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
/dev/block/stl9 /system rfs ro,relatime,vfat,log_off,check=no,gid/uid/rwx,iocharset=utf8 0 0
/dev/block/mmcblk0p2 /data rfs rw,nosuid,nodev,relatime,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8 0 0
/dev/block/stl10 /dbdata rfs rw,nosuid,nodev,relatime,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8 0 0
/dev/block/stl11 /cache rfs rw,nosuid,nodev,relatime,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8 0 0
/dev/block/stl3 /efs rfs rw,nosuid,nodev,relatime,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8 0 0
/dev/block/mmcblk0p2 /dbdata/rfsdata rfs rw,nosuid,nodev,noatime,nodiratime,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8 0 0
/dev/loop0 /dbdata/ext2data ext2 rw,noatime,nodiratime,errors=continue 0 0
/dev/loop0 /data ext2 rw,noatime,nodiratime,errors=continue 0 0
/dev/block/mmcblk0p2 /data/gps rfs rw,nosuid,nodev,noatime,nodiratime,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8 0 0
/dev/block/mmcblk0p2 /data/misc rfs rw,nosuid,nodev,noatime,nodiratime,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8 0 0
/dev/block/mmcblk0p2 /data/wifi rfs rw,nosuid,nodev,noatime,nodiratime,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8 0 0
/dev/block/mmcblk0p2 /data/local rfs rw,nosuid,nodev,noatime,nodiratime,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8 0 0
/dev/block/mmcblk0p2 /data/property rfs rw,nosuid,nodev,noatime,nodiratime,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8 0 0
/dev/block/vold/179:1 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0002,dmask=0002,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
附件: 您所在的用戶組無法下載或查看附件
我是用可能是世上最簡單的 z4root + oclf

root 後,oclf 是做以下動作的

1. create 1.xG image file /dbdata/rfsdata/ext2/linux.ex2
2. format this file to ext2
3. mount this file to /dbdata/ext2data
4. move /data/* to /dbdata/ext2data
5. mount the image to /data
從 cat /proc/mounts 命令可知…

原本的 filesystem 是 rfs
http://www.samsung.com/global/bu ... s_RFS_Brochure.html

跟據 samsung 所講,rfs 是很厲害的,但 product 出來了,卻十分糟糕…
從 lagfix 原理來看,錯不在 media,而在 rfs …
但是在 rfs 上只 access 單一 file,則看來無問題…當然這也有可能是因為 ext2 繼承了 linux 強大的 file cache。
rfs 的真正問題是什麼,則有待調查了…

再看 google nexus one 用的檔案系統…是 nilfs2,也是一種非常適合 ssd 用的 fs!
http://en.wikipedia.org/wiki/NILFS

政治角度看,samsung 不太可能棄 rfs 不用…但前途如何…無人知了。
http://lwn.net/Articles/362020/

補充,RFS 只是 升級版的 FAT,實際上,無人知入面搞乜,點解會 lag,因為 rfs 是 closed source 的…在 linux  上使用 fat 或其衍生產品,原因只會是就 Microsoft,但在 embedded device 裡作 root file system,則明顯是不合理的!

第二個問題…

http://en.wikipedia.org/wiki/Samsung_Galaxy_S
呢度明明話 Memory 有 512MB,但睇耐得 320,一般街外講法都係話 OS 用了 100M 左右,這某程度上是合理的,大多用家都會接受,但,這是個騙局,/proc/meminfo 是不會欺騙人的!

# cat /proc/meminfo
MemTotal:         311348 kB
MemFree:           16752 kB
Buffers:            1028 kB
Cached:            77744 kB
SwapCached:            0 kB
....................


另一個 Memory 有關的問題,HTC 的機都有用 ramzswap 壓縮 RAM 當 swap 用…
http://code.google.com/p/compcache/
這對 embedded device 來說是非常聰明的做法…可以在有限的空間壓榨出更多 Memory,即不用 ssd 當 swap,IO 也超快…但 galaxy s 是完全無 swap 的,300MB Ram 玩完就玩完…

總結來講,Samsung 這個產品是頗令人失望的…強大的硬件加求其交差的軟件 impl!
http://lwn.net/Articles/362020/

補充,RFS 只是 升級版的 FAT,實際上,無人知入面搞乜,點解會 lag,因為 rfs 是 closed source 的…在 linux  上使用 fat 或其衍生產品,原因只會是就 Microsoft,但在 embedded ...
閒魂 發表於 2011-1-30 20:22
俾你發現了 Samsung 的秘密
你要小心你 O既安全 !
====== /dbdata/rfsdata/ 2G rfs ======

Write 200M in 79.867 secs (2,564,263 bytes/sec)        <== 2.5 MB/s
Read 200M in 346.247 secs (591,485 bytes/sec)         <== 超慢讀取

Write 20M in 31.912 secs (641,764 bytes/sec)                <== *** main lag reason
Read 20M in 0.309 secs (66,278,317 bytes/sec)        <== Cached read for small file

====== /dbdata/ext2data 1.2G image on rfs ======

Write 200M in 61.810 secs (3,313,379 bytes/sec)        <== 3.3 MB/s
Read 200M in 316.108 secs (647,879 bytes/sec)        <== 超慢讀取 again

Write 20M in 0.542 secs (37,785,977 bytes/sec)        <== *** Delayed write
Read 20M in 0.328 secs (62,439,024 bytes/sec)        <== Cached read


====== /mnt/sdcard 14G vfat ======

Write 200M in 165.051 secs (1,240,828 bytes/sec)        <== 1.2 MB/s 特慢,未知原因
Read 200M in 24.517 secs (8,353,387 bytes/sec)        <== 8.3MB/s 比 rfs 快十多倍

Write 20M in 3.033 secs (6,752,390 bytes/sec)                <== 雖慢但仍比 rfs 寫入快 10 倍
Read 20M in 0.336 secs (60,952,380 bytes/sec)        <== Cached read

# # 第一次太慢,所以試第二次 200M,結果…更慢
Write 200M in 258.810 secs (791,314 bytes/sec)

====== 對比 pcin 的 server /home ext4 (RAID5) ======
Write 204800000 bytes (205 MB) copied, 1.11217 s, 184 MB/s
Read 204800000 bytes (205 MB) copied, 0.635323 s, 322 MB/s


http://idler.pcinhk.com/samsung_galaxy_s_fs_benchmark.txt
結論︰
lag 是因為 rfs 寫入小 file 超慢 (0.6 MB/s),在 ext2 image 上會利用到 cache,延遲了寫入…
正常的讀寫都不會過 20M,所以都會變成 37MB/s write 和 64MB/s read,因此 lag 的問題解決…
下一步應該 format 張 internal sd card 做 ext4,假如 6M/s write 不夠用(eg 影相/Video 時)…
Reference
Transcend 8GB Class 6 MicroSD (FAT32)


20 MB Data Write to SD
dd if=/dev/zero of=xxx bs=1024 count=20000
20480000 bytes transferred in 3.816 secs (5366876 bytes/sec)
5.12MB / s


20 MB Data Read from SD
dd if=xxx of=/dev/null
20480000 bytes transferred in 0.327 secs (62629969 bytes/sec)
59.73 MB / s


200 MB Data Write to SD
dd if=/dev/zero of=xxx bs=1024 count=20000
204800000 bytes transferred in 20.057 secs (10210898 bytes/sec)
9.73 MB / s


200 MB Data Read from SD
dd if=xxx of=/dev/null
204800000 bytes transferred in 123.918 secs (1652705 bytes/sec)
1.58 MB / s
結論︰
lag 是因為 rfs 寫入小 file 超慢 (0.6 MB/s),在 ext2 image 上會利用到 cache,延遲了寫入…
正常的讀寫都不會過 20M,所以都會變成 37MB/s write 和 64MB/s read,因此 lag 的問題解決…
下一步應該 forma ...
閒魂 發表於 2011-1-30 22:00
世事都給你看透了.jpg
RFS係一個on9既file system
1
用FAT唔係問題
但係佢每個data block中間(4KB)都會有條64bit既checksum用黎做journaling
個後果就係將align唔到

注:linux filesystem 全部operation都係per block basis
冇得話寫幾個byte咁樣