![]() |
|
|
Googleのunix.com
|
|||||||
| 高レベルのプログラミング は、 C 、 C + +についての質問の投稿は、 Java 、 SQL 、および他のプログラミング言語です。 |
その他のUNIXおよびLinuxフォーラムトピックは参考にすること
|
||||
| スレッド | スレッドスターター | フォーラム | 返信 | 最後の投稿 |
| セマフォ | raguramtgr | UNIXのダミー質問と回答のため | 7 | 2009年6月15日 10:39午前 |
| セマフォ | Jaken | シェルプログラミングとスクリプティング | 2 | 2009年4月4日 06:10午後 |
| dmidecode 、 RAMの速度\u003d "現在の速度:不明" | サンティ | ファイルシステムは、ディスクとメモリ | 0 | 2006年2月16日 06:16午前 |
| セマフォ | vjsony | UNIXのダミー質問と回答のため | 3 | 2003年4月7日 03:06午後 |
| セマフォ | yls177 | UNIXのダミー質問と回答のため | 1 | 2002年10月9日 12:18午前 |
![]() |
|
|
LinkBack | スレッドツール | このスレッドを検索 |
評価:
|
表示モード |
|
|
|
||||
|
トラスのバージョンがありません- cをフラグ、または他のフラグと同じように1つ私がLinuxでのトレースを使用。
Linuxの場合: $て/ sbin / sysctlのは、 |はgrep shm ... <snipエラーmsgs> vm.hugetlb_shm_group \u003d 0 kernel.shmmni \u003d 4096 kernel.shmall \u003d 2097152 kernel.shmmax \u003d 33554432 Q :なぜSHMセマフォパラメータのパフォーマンスに影響を与えるのでしょうか? また、念のため私はこの走った $て/ sbin / sysctlのは、 |はgrepのSEM <snipエラーmsgs> kernel.sem \u003d 250 32000 32 128 編集migurusで最終; 2008年9月24日に 08:55午後..理由:情報追加 |
|
||||
|
おかげでOtheusとジム、私はここに非常に詳細な答えが出た:
セマフォのアクセス速度| KernelTrap そのためには、 2.6.9カーネルは、現代の時間に最適/ Wとされていません 私everebodys時間に感謝! |
|
|||||
|
ここに私のコードです: コード:
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <time.h>
#define NSEMS 2
/* change this per CPU to run between 8 and 12 s*/
const static int maxloop = 10000000;
main(int argc, char *argv[])
{
time_t start,last,stop;
long int i;
int estimate = 100;
int sid;
key_t key;
ushort vals[NSEMS] = { 0, 0 };
key = ftok("/tmp",99);
last=start=time(NULL);
for (i = 0; i < 1000; ++i) {
usleep(10);
last=time(NULL);
if (last > start) break;
}
start=last;
last = 0;
for (i = maxloop/8; i < maxloop; i++) {
if ((sid = semget(key, NSEMS, IPC_CREAT | 0777)) == -1) {
perror("Can Not Get Semaphore ID");
}
if (semctl(sid, NSEMS, GETALL, vals) == -1) {
perror("Can Not Get Semaphore Values");
}
}
/* do the last 1/8th until the second changes.
If your processor reaches the maxloop before that,
change the maxloop or the divisor or the "estimate" */
stop=time(NULL);
for (i = maxloop - maxloop/8; i < maxloop; ++i) {
if ( !(i % estimate) ) {
last=time(NULL);
if (last > stop) break;
stop=last;
}
/* repeat semaphore opts */
if ((sid = semget(key, NSEMS, IPC_CREAT | 0777)) == -1) {
perror("Can Not Get Semaphore ID");
}
if (semctl(sid, NSEMS, GETALL, vals) == -1) {
perror("Can Not Get Semaphore Values");
}
}
stop=last;
printf("%.2f semop/s (%i/%i) [%d]\n", (double)i/(stop-start), i, stop-start, estimate);
}
|
![]() |
| ブックマーク |
| スレッドツール | このスレッドを検索 |
| 表示モード | このスレッド |
|
|