2008年12月2日火曜日

/proc ってすごい!!

システムのCPU使用率や,メモリ使用量などの情報が全て入っています.
例)
/proc/meminfo :メモリ搭載量・空きメモリ量などが記載
/proc/cpuinfo :CPUの情報が記載

また,/procディレクトリ以下には,それぞれのプロセスの情報も格納されています.
プロセスIDごとにディレクトリがあり,その中に格納されています
例)
/proc/pid/map :そのプログラムがどのアドレスを何に使っているか
/proc/pid/status :そのプロセスの名前や状態などの情報

全て情報がここを見ればわかっちゃうわけですねー!
すごい.

今得たいのは,それぞれのプロセスの情報なので,
/proc/pid/statを見ればOKなようです.

参考ページ:
/procによるLinuxチューニング
Manpage of PROC

2008年12月1日月曜日

三項演算子が二項?

perfctrの中にあるglobal.cで謎な記述がありました.
info.tsc_to_cpu_mult ? : 1
三項演算子っぽいのに条件の後ろの値が1つしか値がない.

これは,条件部分の値がfalseでない場合は,その値を返り値とし,
falseならばセミコロンの後ろの値を返す,ということらしい.

つまり,ここは,
info.tsc_to_cpu_mult ? info.tsc_to_cpu_mult : 1
ってことですね.

2008年11月29日土曜日

2008年11月27日木曜日

Rubyのインストール

スクリプトを作るのにRubyを使ってみることにしました.
昔まつもとさんの講演を聞きに行って,最も自然言語に近いスクリプト言語ということで興味があったので.

ここからダウンロード

Ruby Install Guideを参考にインストール

以降,そのページにありますが,一応やったことをメモ.

% tar xvf ruby-1.8.7-p72.tar.gz
% cd ruby-1.8.7-p72
% ./configure
% make
% su
# make install
# exit
% make clean


デフォルトでは/usr/local 以下にインストールされるようです.

% ruby -v
とすると,バージョンが表示され,ちゃんとインストールできていることが確認できました.

よーし,初Ruby挑戦♪♪

公式ページのチュートリアルはプログラミング初心者向けで読みやすいですw

2008年11月25日火曜日

リアルタイムプロセス

プロセスをリアルタイムプロセスにするには,sched_setschedulerを用いる.

sched_setscheduler(pid_t pid, int policy,const struct sched_param *param);

pid:プロセスID(自身をリアルタイムプロセスにするには0を設定)
policy:どのようなスケジューリングに設定するかのポリシー
(リアルタイム:SCHED_FIFO,SCHED_RR
リアルタイムでない:SCHED_OTHER,SCHED_BATCH,SCHED_IDLE)

●使用例:より正確に時間を計測したい場合
#include
struct sched_param *param;

int main(){
 ……
sched_setscheduler(0,SCHED_RR,param);
sleep(sleep_interval);
sched_setscheduler(0,SCHED_OTHER,param);
 ……
}

参照ページ:
Manpage of SCHED_SETSCHEDULER

2008年11月23日日曜日

ファイルの中身を検索する

「この構造体どこに定義してあるのッ(怒)」というときのために.

shell> grep -r 文字列 *
これで全ファイル内から文字列を検索できる.

特定のファイルから文字列を検索するには,
shell> grep 文字列 ファイル名
でOK

2008年11月22日土曜日

精度の高いSLEEP

sleep関数では,秒単位でしかsleepのインターバルを指定できません.
更に精度の高いsleepを使用したい場合には,usleepとnanosleepの2つがあります.
usleepは今はあまり推奨されていないようなので,一般的にはnanosleepのよう.
カーネル2.4系ではこの関数をリアルタイムプロセス内で使う必要があったようですが,今現在はその必要はないとのこと.

参照ページ:
Manpage of USLEEP
Manpage og NANOSLEEP