7 より多くのスレッドを使用すると、より少ないスレッドを使用するよりも遅くなる理由 8つのスレッドを使用してプログラムXを実行しようとしましたが、n分で終了しました。50スレッドを 使用して同じプログラムを実行しようとしましたが、n * 10分で終了しました。 なぜこれが発生し、使用できるスレッドの最適数を取得するにはどうすればよいですか? 30 multithreading
7 クロムの合計メモリ使用量を取得する google chrome / chromiumは複数のプロセスを生成するため、これらのプロセスが使用する合計メモリ量を確認するのは困難です。 一連の接続されたプロセスが使用している合計メモリ量を簡単に確認する方法はありますか? 28 memory chrome process-management multithreading
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ミリ秒未満前に実行したスレッドはスクリプトを実行しません。 21 command-line multithreading
1 マルチスレッドLinuxプロセスがシグナルを受け取るとどうなりますか? Unix(Posix)プロセスがシグナルを受信すると、シグナルハンドラが実行されます。 マルチスレッドプロセスではどうなりますか?どのスレッドがシグナルを受信しますか? 私の意見では、シグナルAPIはそれを処理するように拡張する必要があります(つまり、シグナルハンドラのスレッドを決定できるはずです)が、Linuxカーネルのメーリングリストやさまざまなフォーラム。私が理解したように、Linusの概念はPosix標準とは異なり、最初にいくつかの互換レイヤーが構築されましたが、現在ではLinuxはposixモデルに従います。 現在の状態は何ですか? 20 linux signals posix multithreading
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 … 11 process-management multithreading pid
2 なぜ最近のLinuxでは、デフォルトのスタックサイズが非常に大きい-8MB(一部のディストリビューションでは10) たとえば、OSXでは、512k未満です。 アプリが再帰を使用せず、多くのスタック変数を割り当てないことを念頭に置いて、推奨されるサイズはありますか? 質問が広すぎて使用法に大きく依存することはわかっていますが、この膨大な数の背後に隠された/内部/システムの理由があるかどうか疑問に思っていたので、それでも質問しました。 アプリでスタックサイズを512 KiBに変更するつもりなので、私は疑問に思っていました-これはまだ巨大な数のように聞こえますが、8MiBよりはるかに小さく、プロセスの仮想メモリが大幅に減少します。多くのスレッド(I / O)があります。 私はこれが本当に害を及ぼさないことも知っています、ここでよく説明されています:pthreadのデフォルトのスタックサイズ 10 linux osx virtual-memory multithreading stack
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が同時に処理されます。 これはどのように行うことができますか? 9 shell-script multithreading parallelism
1 デフォルトでマルチスレッドmakeを使用しますか? コマンドラインにmake追加-j6するだけでなく、システム全体でマルチスレッド(私のシステムでは6スレッドが理想的)を使用する方法はありますか?つまり、実行するとmake、実行していた場合と同じように動作しmake -j6ますか?AURからpacaur(Arch を使用して)多くのパッケージをインストールし、makeコマンドを直接実行しないため、この機能が必要です。 8 command-line compiling make multithreading
3 bashシェルスクリプトからサービスURLを並行して呼び出す方法は? 別のアプリケーションから呼び出しているサービスがあります。以下は私が呼び出している私のサービスURLです- http://www.betaservice.domain.host.com/web/hasChanged?ver=0 上記のサービスURLを1つずつ順番に呼び出すのではなく、マルチスレッドで負荷テストを行う必要があります。 bashシェルスクリプトからの方法はありますか?マルチスレッドで呼び出すことにより、上記のサービスURLに負荷をかけることができますか?可能であれば、URLを超えて60〜70のスレッドを並行して非常に高速に呼び出すことができますか? 8 bash shell-script download multithreading
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[]) { … 8 linux multithreading