2013-10-18 57 views
1

最初我的生產者函數只是寫數據,現在我有第二個線程負責寫數據。生產者函數將memcpy放入循環緩衝區並觸發消費者線程開始寫入。在Windows上增加io優先級?

當我使用2線程方案時,我得到所需的線程隔離,程序穩定性和寫入前可變計算的能力 - 但io性能降低了50%。

我的理論是,我可以爲每個線程設置某種優先級,我想調整。這可能嗎。

我在RAID0數據剝離配置中使用2個SSD。

libTIFF io workflow

+0

您正在執行額外的內存複製步驟。當然,它比較慢。 – EJP

+0

@EJP是的,有一個額外的內存拷貝,但這隻會影響如果代碼是內存綁定,或者如果內存拷貝與文件寫入串行,這似乎並不是這樣。 – Mikhail

+0

你用什麼API寫數據? –

回答

2

你所說的 「IO性能更糟糕的是50%」 是什麼意思?根據您的資源監視器,它可以達到最高:磁盤隊列已滿,磁盤活動時間爲100%。如果你的意思是寫速度跳躍 - 它們與任何可能的線程優先級無關。它們是由磁盤磁頭定位引起的,這是由於文件碎片,fs表格修改等引起的。

+0

相同的200 GB工作負載需要大約1.5倍的時間。起初價格大致相同,但後來開始落後。這是第一個十幾兆字節花費同一時間編寫的,但剩下的時間比生成器函數只寫入數據要長。 – Mikhail