}
輸出結果讓我有些意外:
name=do_sync_write pid=22542 uid=0 ino=324338 name=sda1 filename=sqlite_lvkvyhyhutvo2ss-journal
name=do_sync_write pid=22542 uid=0 ino=324338 name=sda1 filename=sqlite_lvkvyhyhutvo2ss-journal
name=do_sync_write pid=22542 uid=0 ino=324338 name=sda1 filename=sqlite_lvkvyhyhutvo2ss-journal
name=do_sync_write pid=22542 uid=0 ino=324338 name=sda1 filename=sqlite_lvkvyhyhutvo2ss-journal
name=do_sync_write pid=22542 uid=0 ino=324338 name=sda1 filename=sqlite_lvkvyhyhutvo2ss-journal
name=do_sync_write pid=22542 uid=0 ino=324316 name=sda1 filename=sqlite_lvkvyhyhutvo2ss
name=do_sync_write pid=22542 uid=0 ino=324316 name=sda1 filename=sqlite_lvkvyhyhutvo2ss
name=do_sync_write pid=22542 uid=0 ino=324316 name=sda1 filename=sqlite_lvkvyhyhutvo2ss
name=do_sync_write pid=22542 uid=0 ino=324316 name=sda1 filename=sqlite_lvkvyhyhutvo2ss
name=do_sync_write pid=22542 uid=0 ino=324316 name=sda1 filename=sqlite_lvkvyhyhutvo2ss
居然是sqlite做了大量的臨時檔案寫入操作,僅僅是起動一次就做了800多次寫入操作。增加一條記錄要寫入24次,其中臨時檔案寫入佔21次。如果使用的臨時檔案系統,那沒事兒,因為臨時檔案系統是用記憶體來模擬的,寫多少次都不怕,預設的臨時檔案系統mount在/tmp下。而我在檢查sqlite程序開啟的檔案時,發現臨時檔案放在/var/tmp下,問題就出在這裡,這不是臨時檔案系統。我修改了sqlite的**,對flash的寫入操作降為原來的1/8。
希望這個改動確實有效。
~~end~~
用systemtap分析磁碟寫入操作
probekernel.function do sync write 輸出結果讓我有些意外 name do sync writepid 22542uid 0ino 324338name sda1filename sqlite lvkvyhyhutvo2ss journal name do sync ...
用systemtap研究核心
用systemtap研究核心 作者 李先靜 前幾天寫了一篇關於kprobes的blog,kprobes是個好東西,不過要編寫c 要編譯核心模組,稍嫌有些麻煩。今天我們介紹乙個基於kprobes實現的工具systemtap,systemtap是乙個核心trace工具,用它來研究核心,跟蹤核心執行非常方...
用systemtap研究核心以及相關漏洞
作者 李先靜 前幾天寫了一篇關於kprobes的blog,kprobes是個好東西,不過要編寫c 要編譯核心模組,稍嫌有些麻煩。今天我們介紹乙個基於kprobes實現的工具systemtap,systemtap是乙個核心trace工具,用它來研究核心,跟蹤核心執行非常方便。我玩了一下,感覺不錯,這裡...