The UNIX and Linux Forums  

Go Back   UNIXおよびLinuxフォーラム > トップフォーラム > 高レベルのプログラミング
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午前

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek を搭載 Powered by Google
 
LinkBack スレッドツール このスレッドを検索 評価: Thread Rating: 1 votes, 4.00 average. 表示モード
  #1固定リンク)  
Old 2008年9月17日
migurus migurus is offline
登録ユーザー
  
 

参加日: 2008年09月
場所:アメリカ
投稿: 49
セマフォのアクセス速度

私はいくつかの方式を使用してセマフォのロックを調べている。私はいくつかの基本的なシステムセマフォ情報取得して表示するループの実行速度を評価するには:

一方: ;行う。 / semshow ;行わ> res.txt

私は3箱- SCOの一OpenServer 5を実行し、他のフェドーラ2.6.9 2つの似たような現代のHPのXeonボックス、および1つのボックスにLinux近代の下に古いPIII ( )は、この情報が走った。
その結果非常に直感的なカウンターがあります:
時間/週| OSの|の平均数秒のBERを実行
---- | --- | -------------------------
のXeon |上海協力機構| 1700
のXeon |フェドーラ| 500
PIII | Linuxの(最近のディストリビューションは、不明) | 900
すべての3つのシステムのほとんどは、テスト実行時にアイドル状態だった。

私はお尋ねしたいのですが、何をアウトパフォームするには、モダンなOSに対応する方法を同じような古代のUnix OSの下で、現代のXeon PIIIボックスアウトパフォームボックス付属の要因も、となる。任意のpontersいただければ幸いです。

このプログラムは非常semshowは、下記を参照してください基本的な一覧です:

コード:
 
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include  <sys/timeb.h>
#include <time.h>
#include "semlib.h"
#define MODE_CREATE     0
#define MODE_REMOVE     1
key_t   IPCKEY;
main(int argc, char *argv[])
{
  int   sid, i;
  pid_t last_rpid, last_wpid;
  char  dbuf[80];
  union semun           arg;
  unsigned short        vals[NSEMS];
  struct timeb tb;
  struct tm *tp;
        if((IPCKEY = get_ipc_key()) == -1)
        {
                errexit("Can Not Obtain IPC Key");
        }
        if((sid = semget(IPCKEY, NSEMS, 0)) == -1)
        {
                errexit("Can Not Get Semaphore ID");
        }
        memset(vals, 0, sizeof(vals));
        arg.array = &vals[0];
        if(semctl(sid, NSEMS, GETALL, arg) == -1)
        {
                errexit("Can Not Get Semaphore Values");
        }
        if((last_rpid = semctl(sid, RDLOCK, GETPID)) == -1)
        {
                errexit("Can Not Get Semaphore R-Pid");
        }
        if((last_wpid = semctl(sid, WRLOCK, GETPID)) == -1)
        {
                errexit("Can Not Get Semaphore W-Pid");
        }
        ftime(&tb);
        tp = localtime(&tb.time);
        strftime(dbuf, sizeof(dbuf) - 1, "%T", tp);
        printf("%12li.%03i %s  RD:[%i]  WR:[%i] %i/%i\n",
                tb.time, tb.millitm, dbuf, 
                vals[RDLOCK], vals[WRLOCK],
                last_rpid, last_wpid);
        exit(0);
}

semlib.hこれらdefsしている:

コード:
 
#define NSEMS   2
#define RDLOCK  0
#define WRLOCK  1
union   semun   {
        int             val;
        struct semid_ds *buf;
        unsigned short  *array;
};

  #2固定リンク)  
Old 2008年9月18日
otheus's Avatar
otheus otheus is offline Forum Staff  
モデレータ翼モード
  
 

参加日: 2007年2月
場所:インスブルック、オーストリア
投稿数: 1,893
ここに1つの答え:あなたの時間を測定バギーです。 ftime上のLinux (下) :男を参照してください

引用:
この関数は廃止されています。それを使用しないでください。十分時間( 2 )を秒単位での時間をすることができます
使用される; gettimeofday ( 2 )マイクロ与える; clock_gettime ( 3 )ナノ秒が与え
まだ広く利用されています。

millitmフィールドlibc4とlibc5の下では意味がある。しかし、初期のglibc2とバギーです
が0を返すが、 glibcの2.1.1を再度修正されています。
  #3固定リンク)  
Old 2008年9月18日
migurus migurus is offline
登録ユーザー
  
 

参加日: 2008年09月
場所:アメリカ
投稿: 49
はFedoraボックスをしている
/lib/tls/libc.so.6 - > libcの- 2.3.5.so
そのためには、私は、バージョン2.3.5だと仮定します。

しかし、それは的外れだ。

第2回のシステムは、システム全体の電力を示すと、純粋なコード内のプログラムを実行したので、話をしてください。私の驚きPIIIにはLinuxで、多くのサイクルとしてのLinuxの下で2番目のXeon 3.2GHz以上withi 、ほぼ2回実行するように管理されます。昔の上海協力機構の下で次に同じOSRのXeon時間/週2回の速PIIIボックスとして実行してください。
  #4固定リンク)  
Old 2008年9月18日
otheus's Avatar
otheus otheus is offline Forum Staff  
モデレータ翼モード
  
 

参加日: 2007年2月
場所:インスブルック、オーストリア
投稿数: 1,893
しかし、問題の# 1は、これは間違った方向に測定されます。あなたには何を測定するためにしようとしていると無関係されるライブラリの呼び出しにあまりにも多くの依存関係があります。総力を挙げて、セマフォのコードを、再テストをして何回取得を参照してください。または、セマフォの周りに、 10,000 ×ループを実行します。最寄りのmistimings遊びに来るようにマイクロ秒にそのスケールダウンされていない。

問題は# 2は、セマフォとプロセッサの速度が比較的独立しているバスのアクセスが必要です。
  #5固定リンク)  
Old 2008年9月18日
migurus migurus is offline
登録ユーザー
  
 

参加日: 2008年09月
場所:アメリカ
投稿: 49
私gettimeofday 、再ftime置き換えを実行すると、結果は同じです。

また、要約すると
同じ時間/週:
上海協力機構の下でプログラムをLinuxで3倍の速さよりも、実行
同一のOS :
プログラムの2倍の速さでモダンな古いPIII Xeonプロセッサよりも動作

いかなる理由ですか?任意のアイデアですか?
  #6固定リンク)  
Old 2008年9月18日
otheus's Avatar
otheus otheus is offline Forum Staff  
モデレータ翼モード
  
 

参加日: 2007年2月
場所:インスブルック、オーストリア
投稿数: 1,893
申し訳ございませんが、まだすべての"ルーズ変数を排除していない" 。しかし、セマフォコードのループで再び1000年かそこらとベンチ。
  #7固定リンク)  
Old 2008年9月18日
migurus migurus is offline
登録ユーザー
  
 

参加日: 2008年09月
場所:アメリカ
投稿: 49
私は非常に基本的な最小限度には、 IPCのキーが私のプログラムを簡素化セマフォIDを取得し、セマフォの値を読み込み、それをラインに(時間とセマフォの値を出力) 。それは、すべてのことです。

それから次のように実行します:
$ながら: ;行うtstshow ;行わ> x.txt
キー割り込みと私はしばらく待ってからだった。

x.txtファイルのコンテンツのサンプル:
1221785538 [ 1,99 ]
1221785538 [ 1,99 ]
1221785538 [ 1,99 ]


その後何回システムを実行するようにすれば見ることができた:
$カット- cを- 12 x.txt | uniq - cを

出力のサンプル:
616 1221785538
615 1221785539
612 1221785540

tels私は、システムが1秒間に約600回はこの単純なプロセスを実行することが可能です。

私はここを繰り返すだけの結果と整合するように:
PIII Linuxで- 900 回/秒
のXeon 3.2のLinux - 600 回/秒
SCO社のXeon 3.2 - 1800 回/秒
システムのテストの時にアイドル状態にしている。
どのようにして私が得た結果を説明するのでしょうか?私は、現代の時間にしようとしているボトルネックを見つける/ wでLinuxを実行している。

私の新たな簡素化コードの下を参照してください:


コード:
 
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <time.h>
#define NSEMS   2
main(int argc, char *argv[])
{
  int           sid;
  ushort        vals[NSEMS] = {0, 0};
        if((sid = semget(get_ipc_key(), NSEMS, 0)) == -1)
        {
                errexit("Can Not Get Semaphore ID");
        }
        if(semctl(sid, NSEMS, GETALL, vals) == -1)
        {
                errexit("Can Not Get Semaphore Values");
        }
        printf("%12li [%i,%i]\n", time(NULL), vals[0], vals[1]);
        exit(0);
}

Closed Thread

ブックマーク

スレッドツール このスレッドを検索
このスレッドを検索

高度な検索
表示モード このスレッド
このスレッド

投稿ルール
あなた ことができない。 新しいスレッドを投稿
あなた ことができない。 返信の投稿
あなた ことができない。 添付ファイルの投稿
あなた ことができない。 自分の投稿を編集

BBコード なる 〜の上に
スマイリー なる 〜の上に
[イメージ] コードは 〜の上に
HTMLコードは、 オフ
トラックバック なる 〜の上に
ピングバック なる 〜の上に
Refbacks なる 〜の上に




すべてGMT -4です。現在の時刻は 02:59午後


提供: vBulletin、著作権© 2000 - 2006、Jelsoft企業株式会社。言語翻訳による電源
vBCredits v1.4著作権© 2007 - 2008 、 PixelFXスタジオ
は、 UNIXおよびLinuxフォーラムのコンテンツ著作権© 1993 〜 2009 。すべての権利を管理しReserved.Ad RedTyger

コンテンツ関連のURLで vBSEO 3.2.0