previous questionをビルドするには、0%から100%の間でパーセントを取ることができるプログラムを必要とし、ある程度のCPUが使用されたときにトリガするサービスをテストするために、マシンのCPUの大部分を使用します。それは基本的に0.6秒間当社if
条件をチェックして、繰り返し、0.4秒間スリープ、60%の利用率についてSwiftコードですべてのコアを使用するよう強制できますか?
// workInterval is the fraction of CPU to use, between 0 (none) and 1 (all).
let workInterval: TimeInterval = <utilization>
let sleepInterval: UInt32 = UInt32((1 - workInterval) * 1_000_000)
let startDate = Date()
var sleepDate = Date()
while startDate.timeIntervalSinceNow > -<time> {
if sleepDate.timeIntervalSinceNow < (workInterval * -1) {
print("Sleep")
usleep(sleepInterval)
sleepDate = Date()
}
}
:私はシングルコアのためにこれを行うことができますいくつかのスウィフトコードを書かれています。これは、コードが実行されている個々のコアには最適ですが、マシン上のすべてのコアでこの作業を行う必要があります。 Swiftでこれを行う方法はありますか?このコードを別の言語で書いて、Swiftでそのスクリプトを実行する方が良いですか?
(はい、これは私が与えられている非常にばかげ作業です。)
マルチスレッディングに 'Dispatch'を使うだけです。しかしそれに加えて、おそらく100%を使用するアプリケーションを作成してOSレベルでCPUアクセスを制限することで、特定のCPU使用率を適切にシミュレートするのにはるかに簡単な時間を取ることになります。 – Alexander
@Alexander残念ながら、私はこのシナリオで私たちのコントロールの範囲内にあるとは思わない。 – TheSoundDefense
@TheSoundDefenceあなたは 'nice'や' cpulimit'を使うことはできませんか? – Alexander