タグ付けされた質問 「multithreading」

7
より多くのスレッドを使用すると、より少ないスレッドを使用するよりも遅くなる理由
8つのスレッドを使用してプログラムXを実行しようとしましたが、n分で終了しました。50スレッドを 使用して同じプログラムを実行しようとしましたが、n * 10分で終了しました。 なぜこれが発生し、使用できるスレッドの最適数を取得するにはどうすればよいですか?


2
pthreadのデフォルトのスタックサイズ
私が理解しているように、Linux上のpthreadのデフォルトのスタックサイズは16Kです。64ビットUbuntuのインストールで奇妙な結果が得られます。 $ ulimit -s 8192 また: pthread_attr_init(&attr); pthread_attr_getstacksize(&attr, &stacksize); printf("Thread stack size = %d bytes \n", stacksize); Prints Thread stack size = 8388608 bytes スタックサイズが「8388608」ではないと確信しています。何が間違っているのでしょうか?
24 c  multithreading 

5
1秒あたり平均5回でコマンドを実行する方法は?
API呼び出しを実行し、結果でデータベースを更新するコマンドラインスクリプトがあります。 APIプロバイダーでは1秒あたり5回のAPI呼び出しの制限があります。スクリプトの実行には0.2秒以上かかります。 コマンドを順番に実行すると、十分な速度で実行されず、1秒間に1つまたは2つのAPI呼び出ししか実行されません。 コマンドを連続して実行するが、複数の端末から同時に実行すると、5コール/秒の制限を超える可能性があります。 コマンドラインスクリプトが1秒間にほぼ5回実行されるようにスレッドを調整する方法がある場合 たとえば、5スレッドまたは10スレッドで実行されるもので、前のスレッドが200ミリ秒未満前に実行したスレッドはスクリプトを実行しません。

1
マルチスレッドLinuxプロセスがシグナルを受け取るとどうなりますか?
Unix(Posix)プロセスがシグナルを受信すると、シグナルハンドラが実行されます。 マルチスレッドプロセスではどうなりますか?どのスレッドがシグナルを受信しますか? 私の意見では、シグナルAPIはそれを処理するように拡張する必要があります(つまり、シグナルハンドラのスレッドを決定できるはずです)が、Linuxカーネルのメーリングリストやさまざまなフォーラム。私が理解したように、Linusの概念はPosix標準とは異なり、最初にいくつかの互換レイヤーが構築されましたが、現在ではLinuxはposixモデルに従います。 現在の状態は何ですか?

3
topとpsが同じプロセスに対して異なるPIDを表示するのはなぜですか?
を実行するtop -Hと、複数のmysqlスレッドがすべて同じPIDを持っていることがわかります。ただし、ps -eLf私はそれぞれに異なるPIDがあることを確認します。 ps -eLf UID PID PPID LWP C NLWP STIME TTY TIME CMD mysql 1424 1 1424 0 17 18:41 ? 00:00:00 /usr/sbin/mysqld mysql 1424 1 1481 0 17 18:41 ? 00:00:00 /usr/sbin/mysqld mysql 1424 1 1482 0 17 18:41 ? 00:00:00 /usr/sbin/mysqld mysql 1424 1 1483 0 …

2
なぜ最近のLinuxでは、デフォルトのスタックサイズが非常に大きい-8MB(一部のディストリビューションでは10)
たとえば、OSXでは、512k未満です。 アプリが再帰を使用せず、多くのスタック変数を割り当てないことを念頭に置いて、推奨されるサイズはありますか? 質問が広すぎて使用法に大きく依存することはわかっていますが、この膨大な数の背後に隠された/内部/システムの理由があるかどうか疑問に思っていたので、それでも質問しました。 アプリでスタックサイズを512 KiBに変更するつもりなので、私は疑問に思っていました-これはまだ巨大な数のように聞こえますが、8MiBよりはるかに小さく、プロセスの仮想メモリが大幅に減少します。多くのスレッド(I / O)があります。 私はこれが本当に害を及ぼさないことも知っています、ここでよく説明されています:pthreadのデフォルトのスタックサイズ

1
bashスクリプトでのマルチスレッド/フォーク
次の形式のbashスクリプトを作成しました。 #!/bin/bash start=$(date +%s) inFile="input.txt" outFile="output.csv" rm -f $inFile $outFile while read line do -- Block of Commands done < "$inFile" end=$(date +%s) runtime=$((end-start)) echo "Program has finished execution in $runtime seconds." whileループから読み込みます$inFile、ライン上でいくつかのアクティビティを実行して、結果をダンプ$outFile。 以下のよう$inFile3500+ラインの長さで、スクリプトが完全に実行するための6-7時間かかります。この時間を最小限に抑えるために、このスクリプトではマルチスレッドまたはフォークを使用することを計画しています。8つの子プロセスを作成すると、からの8行$inFileが同時に処理されます。 これはどのように行うことができますか?

1
デフォルトでマルチスレッドmakeを使用しますか?
コマンドラインにmake追加-j6するだけでなく、システム全体でマルチスレッド(私のシステムでは6スレッドが理想的)を使用する方法はありますか?つまり、実行するとmake、実行していた場合と同じように動作しmake -j6ますか?AURからpacaur(Arch を使用して)多くのパッケージをインストールし、makeコマンドを直接実行しないため、この機能が必要です。

3
bashシェルスクリプトからサービスURLを並行して呼び出す方法は?
別のアプリケーションから呼び出しているサービスがあります。以下は私が呼び出している私のサービスURLです- http://www.betaservice.domain.host.com/web/hasChanged?ver=0 上記のサービスURLを1つずつ順番に呼び出すのではなく、マルチスレッドで負荷テストを行う必要があります。 bashシェルスクリプトからの方法はありますか?マルチスレッドで呼び出すことにより、上記のサービスURLに負荷をかけることができますか?可能であれば、URLを超えて60〜70のスレッドを並行して非常に高速に呼び出すことができますか?

2
Linuxの最大スレッド数
私のサーバーはAmazon Ec2 linuxで実行されています。中にmongodbサーバーがあります。mongodbサーバーは高負荷で実行されており、不幸なことに、私はそれに問題が発生しました:/ 知られているように、mongodbはすべてのクライアント接続に対して新しいスレッドを作成し、これは以前は問題なく機能していました。理由はわかりませんが、MongoDBは非特権ユーザー(mongodユーザーで実行)としてホスト上に975を超える接続を作成できません。しかし、それをrootユーザーとして実行している場合、最大20000の接続を処理できます(mongodb内部制限)。しかし、さらに調査すると、その問題はMongoDBサーバーではなく、Linux自体にあることがわかります。 最大接続数をチェックする単純なプログラムを見つけました。 /* compile with: gcc -lpthread -o thread-limit thread-limit.c */ /* originally from: http://www.volano.com/linuxnotes.html */ #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <pthread.h> #include <string.h> #define MAX_THREADS 100000 #define PTHREAD_STACK_MIN 1*1024*1024*1024 int i; void run(void) { sleep(60 * 60); } int main(int argc, char *argv[]) { …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.