Archive for the ‘Linux’ Category
Strange slowness and the reason
最近系統在開啟 firefox 後常常會使得整個系統越來越慢,一開始以為是因為我用 minefield 的關係。到 bugzilla 搜尋了半天只發現跟啟用 jemalloc 會拖慢系統的相關問題,我以為就是這個原因,因為有一次我 /tmp 開不夠大,結果被 jemalloc 的 mmap 檔塞爆了。但是調整 jemalloc 相關參數之後仍不見起色。
於是我換回預設的 iceweasel 3.0.3,但情況還是一樣。只要開啟 firefox 之後系統就會明顯變慢,但是看記憶體用量也不會越變越多,是正常範圍。越來越覺得可能不是 firefox 的錯,不然 bugzilla 與 web 上早就叫苦連天了。
今天突然想到我在編譯 kernel 的時候有加入 CONFIG_HIGHPTE 選項,以為是因此拖慢系統,又認為可能是因為開啟 CONFIG_HIGHMEM4G 所以又增加額外 overhead,於是開始研究解決方法。
開啟 CONFIG_HIGHMEM4G 是因為我總共有 1.25 G 的記憶體可以用,但是 Linux 預設只能使用實體記憶體 9xx MB 的大小,不得已只好開啟 CONFIG_HIGHMEM4G,可以參考 Kernel Trap 這篇。
搜尋一下在 2004 年與 2006 年都有把 2G memory split 選項加入的討論,但是目前編譯 2.6.28-rc7 時還是要先開啟 EMBEDDED 才能選 VMSPLIT_2G…
總之編譯了 kernel 重開機測試,打開 htop 監看記憶體用量與 CPU 用量,突然發現我所有的 process 都是 nice 5,想起 awesome 有個 bug report 就是一樣的問題,因為某一次的修改讓 awesome 會用 SHELL 環境變數裡面的 shell 來執行程式,而有問題的是 zsh,因為 zsh 預設會給 background process 比較高的 nice 值,而我只有瞄過這個 bug report 沒有多想…
我使用 cpufreq 的 ondemand governor,如果 process 的 nice 值大於零則不會替該 process 調高 CPU 速度,因此很有可能這樣才讓系統顯得緩慢 (永遠都是 798 MHz),從 .xsession 把 SHELL 指定為 /bin/sh 之後 nice 值都正常了,直到現在系統都沒有變慢的情形。
令人好奇的是,究竟是因為我改了 kernel 參數而變好的,還是改了 SHELL 才變好的呢… 我猜大概是後者影響比較多吧。
在隨身碟上用 LVM
要移除隨身碟之前,除了要 umount 外,記得要先用 vgchange 把 VolumeGroup 關掉,不然會在 /dev 殘留不能用的 vg/map。
vgchange -a n extdrive
這是一篇筆記。
devscripts 系列: mk-build-deps
devscripts 是給 Debian developer 用的一些好用工具的集合,今天要介紹的是 mk-build-deps
Debian distribution 中包含了許多預先編譯好的 deb 檔,通常我們只要 apt-get install 安裝即可,但是當我們需要修改編譯參數或是製作新版本的套件時,就會需要 apt-get source 取得 source package 自行編譯。要製作 deb 時會要求先安裝一些相依套件,通常是 libfoo-dev 等,此時可以用 apt-get build-dep 自動安裝相依套件。
麻煩的地方是,透過 apt-get build-dep 安裝的套件並不是因為跟任何套件有相依性才被安裝的,相等於直接 apt-get install,因此不會在你編譯完不需要的時候自動移除。如果時常要編一些東西的話,常常系統上會裝滿了許多 libxxx-dev 難以整理。有一個技巧就是利用 equivs 製作 metapackage ,把編譯需要的套件都包含進去,以後不需要了只要移除這個 metapackage 就可以把所有相依套件移除乾淨。
mk-build-deps 就是把這個技巧自動化的工具,使用範例如下:
% mk-build-deps network-manager-gnome dh_testdir dh_testroot dh_clean -k dh_testdir dh_testroot dh_install dh_installdocs dh_installchangelogs dh_compress dh_fixperms dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dpkg-deb: building package <code>network-manager-applet-build-deps' in</code>../network-manager-applet-build-deps_0.6.6-2_all.deb'.</p> <p>The package has been created. Attention, the package has been created in the current directory, not in ".." as indicated by the message above!</p> <p>% dpkg -f network-manager-applet-build-deps_0.6.6-2_all.deb depends autotools-dev, cdbs, debhelper (>= 5.0.0), docbook-to-man, intltool, libdbus-glib-1-dev (>= 0.60), libgconf2-dev, libglade2-dev, libglib2.0-dev (>= 2.10), libgnome-keyring-dev, libgnome2-dev, libgnomeui-dev, libgtk2.0-dev, libiw-dev (>= 27+28pre9), libnm-util-dev (>= 0.6.6), libnotify-dev (>= 0.3.0), network-manager-dev (>= 0.6.6), pkg-config
而 Frank Lichtenheld 更整理了一個 apt repository 可以直接安裝已經製作好的 build-dep 套件!只要加入以下到 sources.list 即可:
deb http://sourcedeps.debian.net/ sid main contrib non-free
video-intel 2.5 & EXA
video-intel 自從 2.2 版就預設使用 EXA 加速,而這個新一代的加速引擎卻因為在文字的顯示上非常緩慢,掩蓋了 EXA 本身的優良特性,Debian BTS 上也怨聲載道。video-intel 2.5 Carl Worth 終於解決了這個問題,原來是因為使用過小的 buffer,導致每次 driver 都要等待上一次 composite operation 結束才能重新使用 buffer,在加大 buffer 之後,EXA 的 text rendering 速度甚至超過了 XAA!
全面轉換至 EXA,引入 GEM,video-intel 的效能只會越來越好
Awesome Window Manager
awesome 是眾多衍生自 dwm 的 window manager 的其中之一,是一種 tiling window manager。第一次接觸到 tiling wm 是 ion,但是因為設定不容易且用不習慣,一下就放棄了。幾個月前發現時常有人在 Debian Planet 上 awesome, awesome 的嚷嚷,花了點時間才搜尋到這個 wm 的首頁,稍微試用一下卻馬上就被吸引住了!目前的 stable 版本也就是我第一次使用的是 awesome 2.3 版,主打的是簡單的設定檔,良好的 EWMH 支持,XRandr/Xinerama 支持等,還有就是比 virtual desktop 更方便的 tag 用法,動態的 layout 等。噢,還有一個一定要提的就是 widget 的支援,awesome 提供基礎的顯示元件如 text, graph, image 等,可以利用 script 把資訊更新到 widget 上,可以輕鬆的自製 widget。
2.3 版用的還挺習慣的,widget 雖然需要用 script 去更新資料,但是也有許多人寫好許多模組利用 ruby, perl 或是獨立程式去更新資料。可是在我還在適應期,還沒開始自訂我的環境時,jd 宣佈開始 awesome 3 的開發,要全面使用 XCB 並引入 Lua 作為設定/程式介面。心養養的我就開始使用 git 版的 awesome,awesome 3 因為引入 XCB 幾乎全面改寫,而 Lua 使得 awesome 大部分的操作都便得動態且可以自訂,如 widget 就可以用 Lua 完成,client 的操作、tag 的切換、快捷鍵的設定,通通都可以透過 Lua 設定卻又維持一定的可讀性。因此,awesome 3 的定位變成了進階使用者為主,高度客製化的 framework window manager。
使用寬螢幕或是大螢幕時,常要調整視窗大小,不容易完全利用到整個螢幕的空間,compiz 等 3d wm 雖然特效絢麗,但是仍比不上 tiling wm 的方便有效率。awesome 推出沒多久就受到許多人的青睞,在這次的 DebConf8 就有數位 DD 使用 awesome 上台演說呢 XD
底下這張圖是 GGLucas 的四螢幕,充分展現了 awesome 在多螢幕環境的威力
awesome 3 預計下禮拜就要釋出了,Debian 的使用者可以直接從 experimental 安裝 3.0~rc5
從官網節錄的一些特性:
- 目前唯一使用 XCB 的 window manager
- 良好的文件
- 所有工作皆可用鍵盤完成
- Multihead 支援,可用 XRandR, Xinerama, Zaphod
- 實做 Freedesktop 標準:EWMH, XDG Base Directory, XEmbed, System Tray
- 根據不同 tag 的 policy 自動排列視窗
- 使用 tag 而不是 workspace,可以根據需要選擇要顯示哪些 tag 內的視窗,可以同時選擇多個 tag
- 可以使用眾多的 Lua 擴充:dynamic tagging, widget feeding, tabs, …
- D-Bus 支援
awesome 的客製化可以參考 Wiki 以及 Lua api doc
Evince Autoreload
Evince 是個好用的文件瀏覽器,速度非常的快,是我平時最常用的 pdf 瀏覽器。有時候在編輯文件就會希望可以在轉成 pdf 之後,可以直接更新 Evince 內容。上網搜尋了一下,不只我有這樣的需求,而且已經有 patch 了,這個熱騰騰的 patch 是 6/12 才更新的。
E680i
從胖貓那裡拿到的新玩具,等不到 Neo 就先玩這個吧
感謝 OpenEZX、Angstrom、OpenEmbedded、OpenMoko 計劃,我從 Angstrom 拿預編好的 2.6.23 kernel 跟 openmoko image 還有 gpe image 來測試,都可以正常開機,openmoko 的 image 還有 bootsplash,開機的時候還有音效(聲音正常運作),但是這版的介面怪怪的,時常會有多個好像是 title bar 的東西在螢幕中央跳動,然後我在 task menu 連點兩下之後,他就不見了 XD,然後游標就露出來…
GPE 倒是運作的不錯,不過因為是 minimalist 的 image,所以裡面什麼東西都沒有,只有一個 terminal,開啟之後還沒有螢幕鍵盤可以打 XD
先這樣吧,改天再繼續玩
An update from Debian release team
http://lwn.net/Articles/267722/
重點是 Release goal:
- Drop debmake from Debian
- UTF-8 debian/changelog and debian/control
- xcin 也在名單上…
- Switch /bin/sh to dash
也許應該在過年前把 chewing 翻修一下…
CellWriter - 手寫工具
在 GnomeFiles 上看到的專案,是可以進行手寫辨識的工具。CellWriter 可以在訓練之後辨識出你在寫什麼,基於 Unicode,辨識方法無關語言,所以也可以輸入中文,但是因為訓練困難(太多字),加上我是用滑鼠畫的… 就只 demo 一個字囉。


介面挺好用的,辨識效果也不錯,不過檔案格式效率不高,字數過多時訓練不易,還有很多可以加強的地方。
