2012-04-23 22 views
1

我想添加代碼到Linux中的頁面錯誤處理程序,特別是我有興趣修改用於寫入時複製的代碼,即do_wp_page。然而,困境是我想測試我的應用程序的機器不在我的控制之下。操作系統或內核無法在該機器上進行修改,因爲它是多個用戶使用的共享機器。使用你自己的頁面錯誤處理程序

現在我正在尋找一種方法來定義我自己的頁面錯誤處理程序,它只會用於我正在運行的應用程序。也許我可以使用一個內核模塊(我也必須要求一些管理權限,或者我可以在用戶空間中定義它)。請注意,我不希望它處理SIGSEGV信號,所以不要說使用mprotect。我想在寫入頁面錯誤時處理真正的副本。我在這裏有什麼選擇?

回答

2

我建議最簡單的事情就是使用虛擬機 - 在VM中進行內核級開發意味着錯誤不會對其他用戶造成問題。

+0

但我不能在VM中進行正確的基準測試。我需要基準我的應用程序。 – pythonic 2012-04-23 13:13:39

+2

@ user1018562如果您需要進行基準測試,那麼共享機器不適合 - 其他用戶在讀數時會產生太多噪音。 – 2012-04-23 13:15:56

+3

當然可以。您可以執行與原始頁面錯誤處理程序相關的基準測試。此外,在開發新內核的時候,你*會崩潰內核,所以甚至不要嘗試在共享機器上執行它 – 2012-04-23 13:17:55

0

不幸的是,do_page_fault和do_wp_page地址沒有公開,所以任何真正做你所說的事情的方式可能都會被忽視。在虛擬機上的共享機器上進行開發,然後獲得專用機器來處理您的基準測試。無論如何,共享機器不會給你很好的讀數,因爲其他用戶的工作負載無論如何都會干擾你。

附註:Linux上的COW出了什麼問題,你需要修改它?

+0

COW沒有錯。我只需要添加代碼即可知道哪些頁面正在被複制。至少我們可以瞭解哪些頁面在寫入時被複制? – pythonic 2012-04-23 13:25:15

+0

我相信時間(某些版本的時間命令至少)會告訴你有多少頁面錯誤發生,其中有多少是COW – 2012-04-23 13:33:57

+0

我不想僅僅是數字而是複製頁面的地址。 – pythonic 2012-04-23 13:42:38

相關問題