0

我被要求編寫測試用例以實際顯示信號量的性能,並在有更多讀者和更少編寫者的情況下讀取寫入信號量,反之亦然。 我已經實現了信號量(在內核空間中我們被問到了實際情況),但沒有得到如何編寫用例,並做了相同的實際實際評估(分類)。信號量和R/W信號量之間的性能評估

+0

它實際上是一個設備驅動程序(一個IPC設備驅動程序)。因此,我們必須實際在兩個用例信號和R/W信號的性能:1)更多的讀者,少寫2)少讀,更使寫入如何..should我寫20生成交流計劃這些使用情況-30相同的c程序並通過打開許多終端來運行paralley,或者也可以使用其他方式。之後,我們可以真正看到並觀察性能之間的差異。 –

回答

1

爲什麼不直接寫兩個版本的代碼(Semaphore/R/W Semaphore)來開始。用例將取決於正在測試的實際功能。它是一個設備驅動程序嗎?它是否與IO有關?它與網絡有關嗎?如果不知道這一點,很難想出用例。

一般來說,我會做一些類似於IO基準測試的測試,將會針對一組運行的增加的內存佔用情況進行多次模擬。另一組運行可能會越過處理負載。另一個可能會在不同的塊大小。我會比較每一個與總帶寬之類的東西,看看性能(在這種情況下聚合帶寬)是如何在這些測試中發生變化的。

同樣,如果您正在測試類似USB驅動程序的東西,您的用例可能會完全不同。

+0

它實際上是一個設備驅動程序(一個IPC設備驅動程序)。因此,我們必須實際顯示信號和R/W信號的兩個用例的表現: 1)更多的讀者,少寫 2)少讀取和寫入更多的那麼 如何從交流程序..should這些用例我寫了20-30個相同的c程序,並通過打開許多終端來運行paralley,或者也有其他方法。 經過上面的介紹,我們可以真正看到和觀察性能之間的差異。 –

0

使用自定義信號量,寫出下列2個C程序和編譯它們

  • reader.c
  • writer.c

作爲一個簡單的初步測試,寫一個shell腳本test.sh並添加命令加載測試二進制文件如下。

#!/bin/sh 

./reader & 
./reader & 
./reader & 
./reader & 
./writer & 

啓動上述外殼腳本./test.sh將推出4個讀卡器和1個寫操作。將其自定義到您的測試場景。

確保您的程序正常運行,即先驗證數據是否正確交換,然後再嘗試分析性能。

一旦您確定IPC按預期工作,請分析CPU使用情況。在啓動test.sh之前,在另一個終端中運行top命令。在測試腳本運行期間,觀察不同讀寫器的CPU使用模式。

您也可以啓動單獨的二進制文件(或測試腳本)有:

  • time <binary>
    要打印總壽命時間花在等待上的內核驅動程序

  • perf record <binary>
    和完成後,運行perf annotate main
    要獲得的代碼中的的各部分所花費的時間的相對量。