タグ付けされた質問 「multi-threading」

1
isolcpusのさまざまなコアでタスクセットが機能しない
序文として、AMD64チップセット上のカーネル3.2でDebian Wheezyを使用しています。私のマシンには2つのXeon E5-2690コアがあります。1つのCPU上のすべてのコアが単一のプロセス専用になるように、ブートパラメーターを設定しました。これを行うために、grubにisolcpus = 8,9,10,11,12,13,14,15を設定しました。 ここまでは順調ですね。ここで、特定のコマンドに分離されたCPUを使用したいとします。簡単にするために、単純な無限ループを使用します。 $ taskset -c 8-15 bash -c 'while true; echo hello> / dev / null; 完了」 これまでのところ、topはコア8がほぼ100%の使用率までスピンすることを示しています。ここで、そのコマンドをもう一度起動するとします。 $ taskset -c 8-15 bash -c 'while true; echo hello> / dev / null; 完了」 上の図は、コア9〜15がアイドル状態であり、2つのプロセスがコア8を共有していることを示しています。 $ taskset -c 8 bash -c 'while true; echo hello> / dev …

1
応答時間が突然急上昇するのはなぜですか?
IISでホストされているServiceStackを使用して実装されたAPIがあります。APIの負荷テストの実行中に、応答時間は良好であるが、サーバーあたり約3,500人の同時ユーザーに到達するとすぐに応答時間が急速に低下することがわかりました。2台のサーバーがあり、7,000人のユーザーでサーバーにアクセスすると、すべてのエンドポイントで平均応答時間が500ミリ秒未満になります。ボックスはロードバランサーの背後にあるため、サーバーごとに3,500の同時実行が可能です。ただし、同時ユーザーの合計数を増やすとすぐに、応答時間が大幅に増加します。同時ユーザーをサーバーごとに5,000に増やすと、エンドポイントあたりの平均応答時間は約7秒になります。 サーバーのメモリとCPUは非常に低く、応答時間は良好ですが、劣化した後も同様です。10,000人の同時ユーザーのピーク時には、CPUの平均は50%をわずかに下回り、RAMは16のうち約3〜4 GBになります。以下のスクリーンショットは、合計10,000人の同時ユーザーによる負荷テスト中のperfmonのいくつかの主要なカウンターを示しています。強調表示されているカウンターは要求/秒です。スクリーンショットの右側では、1秒あたりのリクエスト数のグラフが非常に不安定になっていることがわかります。これは、応答時間が遅い場合の主な指標です。このパターンを見るとすぐに、負荷テストで応答時間が遅いことに気付きます。 このパフォーマンスの問題をトラブルシューティングするにはどうすればよいですか?これがコーディングの問題か構成の問題かを特定しようとしています。この動作を説明できるweb.configまたはIISの設定はありますか?アプリケーションプールは.NET v4.0を実行しており、IISバージョンは7.5です。デフォルト設定から行った唯一の変更は、アプリケーションプールのキューの長さの値を1,000から5,000 に更新することです。また、次の構成設定をAspnet.configファイルに追加しました。 <system.web> <applicationPool maxConcurrentRequestsPerCPU="5000" maxConcurrentThreadsPerCPU="0" requestQueueLimit="5000" /> </system.web> 詳細: APIの目的は、さまざまな外部ソースからのデータを組み合わせてJSONとして返すことです。現在、InMemoryキャッシュの実装を使用して、データレイヤーで個々の外部呼び出しをキャッシュしています。リソースへの最初の要求は、必要なすべてのデータをフェッチし、同じリソースに対する後続の要求はキャッシュから結果を取得します。特定の設定間隔でキャッシュ内の情報を更新するバックグラウンドプロセスとして実装される「キャッシュランナー」があります。外部リソースからデータを取得するコードの周りにロックを追加しました。また、エンドポイントが最も遅い外部呼び出しと同じくらい遅くなるように非同期の方法で外部ソースからデータをフェッチするサービスを実装しました(もちろんキャッシュにデータがある場合を除きます)。これは、System.Threading.Tasks.Taskクラスを使用して行われます。プロセスで使用できるスレッドの数の点で制限にぶつかりますか?

5
複数のscpスレッドを同時に実行する
複数のscpスレッドを同時に実行する: バックグラウンド: サーバーファイルのセットを頻繁にミラーリングしていることがよくあります。これらのサーバーファイルには、何千もの小さな1kb〜3kbファイルが含まれています。すべてのサーバーは1Gbpsポートに接続されており、通常、さまざまなデータセンターに分散しています。 問題: SCPはこれらの小さなファイルを1つずつ転送します。これには時間がかかり、美しいネットワークリソースを浪費しているように感じます。 解決?: 私にはアイデアがありました。ファイルを等量に分割し、5〜6 scpのスレッドを起動するスクリプトを作成すると、理論的には5〜6倍速く実行できます。しかし、私はLinuxスクリプトの経験はありません! 質問: 上記の問題に対するより良い解決策はありますか? このようなものはすでに存在していますか? そうでない場合、私を始めるか、私を助けてくれる誰かがいますか? 2つまたは3つではない場合、どこでLinuxスクリプトの学習を開始するのに適していますか?bashやその他のように。

3
レニス:すべてのスレッドを変更するには?
私はときにrenice、マルチスレッドプロセスのUbuntu 10.04で、その後に結果を表示しtop、唯一のメインスレッドが実際にrenicedますようです。他のすべてのスレッドは古い素敵な値を保持します。メインスレッドだけでなく、プロセス内のすべてのスレッドを再許可する最も簡単な方法は何ですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.