最佳化目錄結構

在硬碟上看4T 5T的時代,同一資料夾下面有上百近千檔案的情形不算少見
但每次瀏覽到這些資料夾總是會被卡住幾秒鐘
相信有人跟我一樣對這個很不爽吧!

在硬碟格式是 EXT3,EXT4的情形下,可以採用e2fsck 對目錄結構最佳化

使用前請記住 要先 umount 硬碟,沒有umount的話 硬碟有可能在過程中損壞
這邊假設mount device 是 /dev/sdb1

umount /dev/sdb1

然後下 e2fsck -D -f 指令

e2fsck -D -f /dev/sdb1

等待完成(幾分鐘~十幾分鐘) 再把/dev/sdb1 mount 回去,這樣就完成了

參考來源:
http://www.cyberciti.biz/faq/tunning-linux-ext3-filesystem/

最佳化的網樂通比RT-N16還猛一倍

雖然這樣比有點二打一的味道 (畢竟網樂通還需要另外接AP)

但是兩者環境還蠻相似的
Asus RT-N16 用的是BCM4718(MIPS) 480MHz CPU
網樂通則是SH-4A 450MHz
這兩者CPU都是降頻過的版本,
BCM4718 原本應該是533MHz
網樂通用的SH-4A原本應該是500MHz

記憶體部分RT-N16 128MB DDR,比網樂通 256MB DDR2 弱了一點
(不過網樂通這個DDR2有降頻 應該還好 就時脈來說不會快太多)

就處理連線數這部分花不了太多CPU
以手上這台 TL-WR941nd v3 BT滿載,CPU load 也才1%~5%
(CPU:Atheros AR9132 400MHz)
先假設AR9132 跟BCM4718 效率接近
(雖然同樣架構 BCM4718時脈較高應該稍微快一點)
RT-N16的CPU負荷應該也是這種程度

基本上可以忽略客戶端連線數負載對AP的影響
尤其在BT的CPU 使用率動不動就幾十%之下的情形,
5%左右的CPU使用率跟誤差沒兩樣.

####以上只是背景分析################################

實際上有人用RT-N16 掛BT 三個以上的torrent RT-N16就死了
而且頻寬還上不了10Mb/s,只能到700KB/s
http://www.mobile01.com/topicdetail.php?f=110&t=2891915
可以Google 到一堆 RT-N16搭配tomato 內建transmission 的慘況
這邊也就不多說了
據傳RT-N16 改採其他方式安裝的transmission會比較穩
但還是遠遠比不上 最佳化 linux kernel + transmission 的網樂通

網樂通在掛了最少五六個起跳的 torrent
上傳(160KB/s)下載(1.3MB/s)滿載,CPU load 也才在5X%徘徊
如果你手上有網樂通真的值得拿來試一試

它完全不熱當 (即便有熱當也不會影響到網路)
還有充裕的空間做其他應用 (目前我是samba + ushare)
下一個我打算弄的最佳化就是lighttpd +php +mysql
工程有點浩大 會卡在哪 也沒什麼頭緒,什麼時候動手還沒定案
反正就是一個目標,慢沒關係我想知道網樂通的極限在哪

如何為網樂通節能

看官方文件時看到這個
只有提到位置在哪,沒提到如何啟用
心想該不會就這麼簡單? 就動手試了一下 果然就這麼簡單 XD

編譯核心時把cpu freq scaling 編進去

當然要使用的 governor 也要選上
(performance ,userspace ,ondemand ,conservative)

直接修改/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
裡面就只是一行字(上面四種其中之一,預設是performance)
把它改成想要的方式就好,儲存好之後 ls 就可以看出來變化了
由於這個設定重開機後會消失,所以建議寫在/etc/rc.local 內自動執行

我偏好conservative , 它的作用方式是
CPU Load : 00~30% ,112500 Hz
CPU Load : 30~50% ,225000 Hz
CPU Load : 50~100% ,450000 Hz

改完後

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

就可以看到現在的CPU 時脈是多少

如果不喜歡STMicroelectronics的設定
可以改driver到 SuperH CPU frequency driver 試試看

更多

網樂通核心編譯

1.建立編譯環境
網樂通使用的是 STLinux (以SH 架構發行的Linux)
官網有介紹怎麼把toolchain 安裝到ubuntu
當然看不懂英文的還有中文STLinux Cross-Compile Enviroment 至 Ubuntu

不過照上面兩個做,在安裝STLinux2.3 時絕對會卡
因為裡面的 install 被改過了,要把裡面的–force-debian 改回 –debian

另外網樂通的kernel 只能用STLinux 2.3 編譯,新版的kernel 只能用STLinux 2.4編
不用擔心,新版的編出來不相容網樂通(沒有支援網樂通的版子)
所以也就不用去花時間編了,安裝STLinux 2.3那個就可以了

安裝完STLinux-2.3 後建議採 中文說明的那個方式

nano ~/.profile
輸入
# for STLinux Cross-Compile
export PATH="$PATH:/opt/STM/STLinux-2.3/devkit/sh4/bin"

儲存後
. ~/.profile

這樣以後Cross compile 就不用下一堆參數

2.編譯網樂通核心
同樣的這個也有官方版,一樣還有中文版的
編譯網樂通專用 Kernel,
nextvod – compile kernel
Neo’s Blogger

大同小異,中文版針對網樂通而言比較詳細
但這裡有個問題點,也就是Load Address跟Execute Address
中文版對這個沒有多做說明, 官方版有只不過是在另外一篇
Creating Linux Kernel U-Boot Images

大意是說
U-Boot,kernel image 的Load Address跟Execute Address 是看板子決定的
U-Boot 的位置要對+編出來的kernel 也要符合 才可能正確載入核心開機
沒錯核心編出來的Load Address跟Execute Address也要符合網樂通的規格
官方那篇 有介紹如何看編譯出來vmlinux的Load,execute address,就不多說了

很X的就是網樂通釋出source 裡的 pdk7105_defconfig 並不符合網樂通規格
也只有下載回來 source 裡的.config 有符合

而讓load,execute address 出問題關鍵的地方就是在 下面這兩個東西

反白的地方必須是這個數值,編出來的核心才會對,要不然就只是浪費時間

參考以上這些東西,有少許編譯經驗的人應該就可以輕易編出網樂通的核心
不信邪的人(像我)
就用STLinux-2.4 +新版核心 套用以上兩個設定編出一個網樂通能吃的核心
只不過能吃不代表能用,網樂通載入核心後竟然就給我自動關機

3.最佳化網樂通核心
基本上應該是可以在make vmlinux 那邊下CFLAGS
只不過我懶得每次都下就直接改Makefile,
由於sh4-linux-gcc 版本是4.2.4,不能下4.6 才有的 -Ofast
所以我就採接近-Ofast 的參數 -O3 -ffast-math
參考指出 -m4 是SH4專有的最佳化參數(一般處理器多是-march=?)
update: 找了一下SH4設計廠的資料
網樂通用的應該是SH7780系列裡的SH7724
核心不是SH-4 而是SH-4A ,可硬解也可硬壓 MPEG4 還可以解VC1
(拿來當機上盒只供播放用有點浪費)
另外它的時脈最高應該是500MHz,只不過就跟DDR2一樣 它被廠商降頻來使用
所以說-m4 參數應該是可以改採 -m4a 進行編譯

然後再加上-pipe (加這個參數純粹只是減少編譯所花的時間)
這邊有個重點
不要在menuconfig 時選擇 Optimize for size,它會使用 -Os 跟最佳化要用的 -O3 牴觸
所以我同樣是在Makefile 修改參數,免得一段時間沒編 腦殘選下去

總結:最後是這樣 CFLAGS="-m4a -pipe -O3 -ffast-math"
註:最佳化有可能會讓程式執行錯誤,編譯後請執行穩定性測試
如果執行上有什麼問題,請優先拿掉 -ffast-math

以下是幾個我在意的東西
加上前面的圖版面占據似乎有點大 就縮起來,有興趣看的可以打開
更多

transmission 最佳化

編譯方式採 Howto_crosscompile_transmission2_for_wydevices  
方便又快速
實際安裝在網樂通上CPU使用率高高低低變化很大
CPU使用率高不會比沒最佳化高,但低可以低到比之前少20~30%

編譯好的版本 transmission-2.77_sh4.tar 內含libevent
使用方式解壓縮 到 / 下
也可以把壓縮檔移到 / 下,下指令

tar xvzf transmission-2.77_sh4.tar.gz

關鍵會出問題的地方是在GTK 那裏,反正也用不到不編他就行了
以下為連結文章之備份

更多

sh4twbox kernel 最佳化

update:
仔細參考menuconfig  的說明,改了核心設定
vmlinux.ub.opt3 感覺還不錯

首先對於不太想看怎麼最佳化的提供我的版本
vmlinux.ub.opt 採O3 且對SH4 最佳化
vmlinux.ub.opt2 採接近Ofast的設定(實際上只是O3+還不是Ofast) 對SH4最佳化
這兩個核心的設定都是相同的 支援非同步 DMA engine
(可以降低對SH4 CPU的負擔)
最佳化程度opt2 > opt ,但opt2 有沒有比opt 快就沒詳細測了
(由於是核心的最佳化,對程式的CPU使用率不會有太明顯的變化)
這兩者都有效改善從samba,ushare 播放影片的delay情形

使用方式: 下載回來 ln -s 到 /vmlinux.ub   (當然原本舊的要先砍掉)
建議準備個救援碟 再做這個動作,以免變半磚 再把舊核心 ln -s 回到 /vmlinux.ub

晚一點看完WBC 在接續寫,最佳化的部分

回復網樂通原本的價值

比較少看到有人提到網樂通改機後影音方面的應用
當然這是因為網樂通的DirectFB 硬解被封印了

不過要作影音用其實也不一定要用網樂通解出來
原因很簡單現在的裝置(聯網電視,iphone,ipad,ps3,xbox360 …)
可以透過DLNA 讀取區域網路的圖片,影片,音樂
(上篇提到的samba 基本上沒有什麼消費型裝置支援它)

網樂通剛好可以拿來當作DLNA server 用
更何況可以走wifi 把網樂通藏在不起眼的地方
增加電視媒體功能之餘又不妨礙觀瞻,可謂一舉兩得

要作的事很簡單 就是在網樂通上面安裝ushare

shpkg -S ushare

安裝完後,ushare 的設定檔是放在 /etc/ushare.conf
比較關鍵的設定有下面這三項

USHARE_NAME=
USHARE_DIR=
USHARE_OVERRIDE_ICONV_ERR=

USHARE_NAME 輸入名稱(高興就好,純粹供多台DLNA server 時辨認)
USHARE_DIR 輸入想分享的資料夾 (有多個資料夾 可用逗號區隔開)
USHARE_OVERRIDE_ICONV_ERR 則是如果檔案名稱有中文 日文…需要設定為yes才能正常顯示


設定完儲存後就可以開始了

/etc/init.d/ushare start

當然不只裝置才能讀到,Windows 7 也可以
不過怪怪的只有從音樂那邊才能播放影片 XD

要注意的一點是 ushare 執行後 如果DLNA server 影片音樂檔案有新增移除
由於ushare 不會隨時更新,只能 restart ushare 才能讀的到新作的變動

除此之外 ushare 最大的缺點是不能讀外掛字幕

參考來源:http://download.ithome.com.tw/article/index/id/927

Previous Older Entries