最初我的生產者函數只是寫數據,現在我有第二個線程負責寫數據。生產者函數將memcpy
放入循環緩衝區並觸發消費者線程開始寫入。在Windows上增加io優先級?
當我使用2線程方案時,我得到所需的線程隔離,程序穩定性和寫入前可變計算的能力 - 但io性能降低了50%。
我的理論是,我可以爲每個線程設置某種優先級,我想調整。這可能嗎。
我在RAID0數據剝離配置中使用2個SSD。
最初我的生產者函數只是寫數據,現在我有第二個線程負責寫數據。生產者函數將memcpy
放入循環緩衝區並觸發消費者線程開始寫入。在Windows上增加io優先級?
當我使用2線程方案時,我得到所需的線程隔離,程序穩定性和寫入前可變計算的能力 - 但io性能降低了50%。
我的理論是,我可以爲每個線程設置某種優先級,我想調整。這可能嗎。
我在RAID0數據剝離配置中使用2個SSD。
你所說的 「IO性能更糟糕的是50%」 是什麼意思?根據您的資源監視器,它可以達到最高:磁盤隊列已滿,磁盤活動時間爲100%。如果你的意思是寫速度跳躍 - 它們與任何可能的線程優先級無關。它們是由磁盤磁頭定位引起的,這是由於文件碎片,fs表格修改等引起的。
相同的200 GB工作負載需要大約1.5倍的時間。起初價格大致相同,但後來開始落後。這是第一個十幾兆字節花費同一時間編寫的,但剩下的時間比生成器函數只寫入數據要長。 – Mikhail
您正在執行額外的內存複製步驟。當然,它比較慢。 – EJP
@EJP是的,有一個額外的內存拷貝,但這隻會影響如果代碼是內存綁定,或者如果內存拷貝與文件寫入串行,這似乎並不是這樣。 – Mikhail
你用什麼API寫數據? –