• 1 
瀏覽模式: 普通 | 列表
01
23

libevent-很好用,是真的

softpapa建議使用的libevent真的很好用,callback明確簡單,程式寫起來不複雜,libevent我看到國內已經有人幫它寫了三篇教學文章,都相當不錯,我想以後碰到socket programming乾脆就用這套打死算了

小弟簡單用libevent比照此網誌寫了簡單的web server,並做apache benchmark,真機車,libevent效能夠可怕,數據如下

[閱讀全文]

標籤: linux
01
22

NETLINK-與kernel溝通的另一種方法

新年快到了,先祝大家新年快樂,牛年發大財,快到了年關,也該好好輕鬆一下,回頭看看自己這一年是不是做了些足以令你自傲的豐功偉業,也希望我能繼續保持對coding的熱誠在新的一年繼續奮鬥

話說回來,有了ioctl,和proc,我們是不是還有其它可以與kernel交換資料的界面呢?沒錯,就是netlink,那什麼時候會用到netlink呢?當你設routing table或防火牆時就會用到了,kernel就是用netlink界面與route指令溝通,scsi驅動也可以看到netlink的影子,netlink有什麼好處呢?

[閱讀全文]

標籤: linux
01
21

epoll,select,poll-無責任效能評測

有天在看Linux系統程式設計時,翻到其中一頁關於linux2.6引進的epoll事件輪詢界面,在好奇心的驅使下,就想動手寫程式跑跑看epoll,select和poll到底那個效能比較好

而我測試的方法是利用這三個API寫一個小的web server,再用Apache Benchmark測試,並以測試的結果比較這三個效能的優劣,我下的apache benchmark指令為” ab -c 50 -n 500 http://192.168.15.25:5050/” ,結果請見如下

[閱讀全文]

標籤: linux
01
14

寫程式,花10分鐘,證明自己的觀念是錯的,無價

[2009.11.2]嚴重錯誤,kernel會自動poll driver是否有data給使用者,所以poll_wait函式會一直被呼叫,所以char driver只需註冊poll,open,release即可達到user space select的所有功能

前幾天跟同事討論到RTCP的事情時,突然腦中閃過一個想法,記得4年前有寫過一個小程式,可以定時把kernel的statics丟到user space, user space的program只用了select和read函式把資料讀出來並顯示在UI上,那時我以為poll_wait函式可以hang住user space process讓user space的程式可以等待kernel有資料時再讀出來,不過今天寫了一小段code發現自己觀念是錯的

[閱讀全文]

標籤: linux
01
13

pidstat-全域型memory leak偵測工具

前一陣子在玩效能評析工具時很意外的發現了這個好東西,一般偵測memory leak的工具都以連結特定library並以其攔截malloc或free,找出memory leaking的bug,或者是像valgrind針對單一的process動態偵測memory leaking的point,但是,有沒有一個tool,可以偵測系統上所有process 的memory consumption,並即時回報?當你系統有上百隻別人寫的程式,要如何快速的找出那隻程式亂幹記憶體?很感謝pidstat,它幫我解決上面提到的疑惑

Pidstat可在這個網站下載,它是sysstat這組系統工具中的其中一隻,sysstat還包含sar,sardc...等其它好用的東東,不過我這邊只專門介紹pidstat的用法,pidstat可下的command如下

[閱讀全文]

標籤: linux
01
12

Framebuffer兩三事-Test On QT2410

Framebuffer是個很好玩的驅動程式,它 allocate一塊自己的kernel memory,並藉由user space file open/read/write方式,把圖形寫入已allocate的空間,而這個已被allocate的kernel memory會對映LCD的pixel,framebuffer依靠此對應把圖形打到LCD上(2009.1.16修正),通常屬於framebuffer的device都被命名為/dev/fbx(x=any number),你可以做個實驗,假設你螢幕的driver是framebuffer,而且它在/dev資料夾下是/dev/fb0,你可以用下面指令補捉螢幕畫面

dd if=/dev/fb0 of=fbdata bs=1024 count=768(假設解析度為1024*768)

也可以用下面指令把fbdata顯示在螢幕上
dd if=fbdata of=/dev/fb0 bs=1024 count=768
所以透過open,read,write /dev/fb0我們可以直接對video card memory讀寫

我先寫一個小的簡單的framebuffer driver範例,並試著解釋一些數據的原理,因為小弟並不是攻這方面的人,所以有錯誤或缺失的地方煩請先進指正

[閱讀全文]

標籤: embedded
  • 1