ここは個人的な備忘録です。テキトーかつ適当が目標。

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
「配列とポインタの完全制覇」(1999/6/29 updated)
Cの配列、ポインタがらみの文法で、ハマりそうなポイントをまとめて下さっている。
しばらくCで書いてないときに、このサイトを読むことにした。


対象読者について

対象読者は、Cをそれなりに習得しており、かつ、 以下のような疑問を感じる人である。
Cの宣言では、[] は* よりも優先順位が高い。 ゆえに、char *s[10]; という宣言は、「char へのポインタの配列」を意味する ---逆じゃないか?
double (*p)[3]; や、void (*func)(int a);といった宣言の読み方がわからない。
int *a;は、a を「intへのポインタ」として宣言する。 しかし、式の中での * は、ポインタをポインタでなくする方に働く。 同じ記号なのに、意味が逆じゃないか?
int *a と int a[] は、どのような場合に置換可能なのか?
空の [] は、どのような場所で使用することができ、 どのような意味を持つのか?


[「配列とポインタの完全制覇」]の続きを読む
スポンサーサイト
第1回 減り続けるメモリ残量! 果たしてその原因は!?

目的 名称 特徴
システム監視
free
簡易にメモリ使用状況を把握できます。本連載でも述べていますが、出力内容に若干問題があります。
vmstat
メモリ使用状況以外にも CPU 使用率の把握などさまざまな用途に利用可能です。単体ではタイムスタンプ出力機能がなく、指定できる更新間隔も高負荷時にはあてにならないことが欠点と言えます。
sar
最も取得情報量が多いコマンドです。ただ、Active/Inactive(本記事内で後述)が取得できないなど、出力内容は若干柔軟性に欠け、メモリ監視という観点ではvmstatに一歩譲るようです。
プロセス監視
top
管 理者がリアルタイムにシステム状況を見るのに適したツールです。ソート機能や更新頻度変更などいろいろな機能があるので、top画面表示中に「h」か 「?」を押して確認するとよいです。システム監視用にログを取得するには、バッチモード(-bオプション)が利用可能です。
ps
topと同様、リアルタイムでシステム状況を監視するのに適したツールです。Linux版には互換性保持のため多くのコマンドオプションが存在し、育った文化によってどのオプションを使うかが分かれます。ちなみに私は「aux」オプション派。
freeコマンドの出力について:

図中で「-/+ buffers/cache」という行の「used」と「free」に当たる部分は、それぞれ「used-」「free+」と呼ぶことにします。

 それでは、各項目の意味について簡単に説明します。

行名 項目名 意味
Mem
total
総物理メモリ量
used
総物理メモリ使用量からfreeを引いたもの
free
何の用途にも使っていない物理メモリ量
shared
常に0。現在は利用されていない
buffers
ファイルなどのメタデータをキャッシュしている物理メモリ量
cached
ファイルのデータ本体をキャッシュしている物理メモリ量
-/+ buffers/cache
used-
buffers、cachedを含めないused量
free+
buffers、cachedを含めたfree量
Swap
total
Swap領域の総量
used
totalからfreeを引いた量
free
使用していないSwap領域の量

 

ActiveとInactiveはvmstat -aやcat /proc/meminfoなどと入力することで取得できます(図5)。

メモリの利用状況について説明した事柄をまとめると、以下のようになります。

1. MemFreeが少なくなること自体に問題はない
2. freeコマンドは、物理メモリ使用状況を正確に把握するのには向かない
3. freeコマンドを使う場合は、ページキャッシュを考慮したused-とfree+を使う
4. 物理メモリ使用状況の把握にはActiveとInactiveを使う






第2回 減り続ける利用可能メモリ……そしてついにリブート!

ここまで見てきた内容を一覧にしてみました(表4)。

  ユーザー空間 カーネル空間
仮想メモリ
カーネルへの影響:なし
他プログラムへの影響:なし
発生事象:メモリを消費したプログラムで
ENOMEMエラーが発生する
カーネルへの影響:限定的
他プログラムへの影響:なし
OSハングアップという観点では
考慮不要
物理メモリ
カーネルへの影響:なし
他プログラムへの影響:あり
発生事象:
 ・スワップアウト発生
 ・ページキャッシュ減少
 ・OOM-Killer発生
カーネルへの影響:あり
他プログラムへの影響:あり
発生事象:
・スワップアウト発生
・ページキャッシュ減少
・OOM-Killer発生
表4 メモリ不足の分類と発生する事象



最終回 SystemTapで真犯人を捕まえろ!

各回のまとめ

 3回に分けてお届けした番外編ですが、メモリのトラブルシューティングに際して覚えておいてほしいトピックを各回ごとにまとめてみます。

【第1回で覚えておいてほしいこと】

* MemFreeが少なくなることを恐れてはいけない
* freeコマンドの結果は物理メモリ使用量の正確な把握には向かない
* 物理メモリ使用状況把握にはActive、Inactiveを使うべきである

【第2回で覚えておいてほしいこと】

* 仮想メモリと物理メモリの違い
* カーネルにはswapやOOM-Killerなど、物理メモリ枯渇に対する防御機構が存在する
* 利用可能な物理メモリが極限までなくなるとリブートに至る可能性がある

【第3回で覚えておいてほしいこと】

* /proc/meminfoの見方
* カーネルの物理メモリ使用量には把握できない部分があること
* SystemTapによる解析の有効性







20110102追記:
Sun, 26 Oct 2008 C言語:メモリ破壊検出ツール electric fenceの使い方
electric fenceの解説記事。感謝。

このツールは、プログラム中の動的配列(malloc等で確保した配列)の開始位置・終了位置を覚えて これらの配列の領域をポインタ等が踏み越えたときにセグフォで停止させてくれる ものです。ですので、このセグフォによるコア(core)をgdb等のデバッガで確認すれば、 どこで、どの配列の領域侵害で停止したのかが一瞬で分かるようになります。

とのこと。使い方の概要は次のとおりらしい:

インストールは簡単で、ライブラリをインストールするだけです。
いつものごとく、Debianのインストール方法を以下に記述します。

 $ sudo apt-get install electric-fence
これで、electric fenceが使用可能となります。
使い方はいくつもありますが、ここではお手軽な方法を紹介します。 まず、デバッグ対象となるバイナリがdo_hogeだとします。このdo_hogeのメモリオーバーランを 検出するには、

 $ ulimit -c unlimited
 $ LD_PRELOAD=/usr/lib/libefence.so do_hoge args
とします。これで、メモリオーバーランを検出するとその場でセグメンテーションフォルトで 停止してくれ、かつ、そのときのcoreを吐いてくれます。
一行目のulimitコマンドが、linuxシステムにコアを吐かせるようにするコマンドです。
あとは、実行バイナリの頭に「 LD_PRELOAD=/usr/lib/libefence.so 」を付ける だけです。

これで、カレントディレクトリにcoreというファイルが生成されているので、あとは、gdbで どこで止まったか確認しましょう。

 $ emacs
 ・emacs上で「M-x gdb "do_hoge" core」と入力する。
これだけで、プログラムのどの行で停止したのかをgdbが教えてくれます。





Mon, 27 Oct 2008 C言語:セグメンテーションフォルト(セグフォ)時にcore(コア)を吐かせる方法
3通りの方法を解説してくださっている。感謝。


第1回 これだけは知っておきたい! 必須コマンド20(前編)
第2回 これだけは知っておきたい! 必須コマンド20(後編)

ここでは、Linuxを使用するに当たって覚えておきたいコマンドを20個抜き出し、その機能や使用例を紹介します。
コマンド 機能
cat ファイルを結合して出力する
cd ディレクトリを移動する
cp ファイルをコピーする
date 日付や時間を表示・設定する
diff ファイルを比較する
df ディスクの空き容量を表示する
exit シェルを終了する(ログアウトする)
grep 文字列を検索する
kill プロセスを終了する
ls ディレクトリの内容を表示する
man コマンドのマニュアルを表示する
mkdir ディレクトリを作成する
more ページごとにファイルの内容を表示する
mv ファイルの移動およびファイル名の変更を行う
nkf 文字コードを変換する
ps 実行中のプロセスを表示する
pwd カレントディレクトリを表示する
rm ファイルを削除する
su(sudo) ユーザーを変更してシェルを起動する
vi テキストエディタを起動する



vi操作手引書

新米Linux管理者がよくやる10の間違い

#1:さまざまな手段でアプリケーションをインストールする
#2:アップデートを無視する
#3:問題のあるrootパスワードを選ぶ
#4:コマンドラインを使うのを避ける
#5:確実に動作するカーネルをインストールしていない
#6:重要な設定ファイルのバックアップを取っていない
#7:サーバをXで起動する
#8:アクセス権を理解していない
#9:rootユーザーとしてログインする
#10:ログファイルを無視する



UNIXシステム管理入門コース

UNIXシステム管理

Solarisの運用管理を紹介します。システムの確認にも使える様にまとめました。

・Syslogの設定
・ログの管理
・ロギングのアラート設定
・サービスの管理
・Solaris管理ツール
・ユーザーの管理
・ディスククォータの設定
・FTPゲストユーザの設定
・バックアップ計画



Linux システムをいろいろ調べる

第1回 不要なサービスの停止こそ管理の第一歩
第2回 各ディレクトリの役割を知ろう(ルートディレクトリ編)
第3回 各ディレクトリの役割を知ろう(サブディレクトリ編)

連載記事 「Linux管理者への道」

Linux運用・管理

いま、同僚の間で流行っている本。ちょっとしたブーム。

こころ (ビッグコミックススペシャル)こころ (ビッグコミックススペシャル)
(2005/05/14)
夏目 漱石榎本 ナリコ

商品詳細を見る


夏目漱石のこころを現代に置き換えて漫画化した作品。
漫画一冊なので分量的にはコンパクト。その分いろいろそぎ落とされている。こぼれおちた部分に本質があったと見るか、大胆にエッセンスが凝縮され抽象化結晶化されたと見るかで評価が分かれるのかなぁ。個人的には好きだ。また原作読もう。

「高性能プログラミング」という観点で調べてみた。

まずは、
高性能プログラミング(名古屋大学 須田礼仁先生) (2011/11/08追記左はリンク切れの模様.)→高性能プログラミング
高性能プログラミング

May9.gzに含まれているpptの出来に感動。キャッシュ、キャッシュライン、TLB、パイプライン等をここまで考慮してプログラムを書ける人ってほとんどいないと思う。プログラマ必読。この資料を使った昨日の須田先生の授業は今まで受けた授業で一番面白かった。




[高性能プログラミング]の続きを読む
SPARC64TM VIIIfx Extensions 本家のPDF
富士通が世界最速 (128 GFLOPS) の CPU を開発 ! (スラッシュドットjapan)


↓面白かった!!
http://journal.mycom.co.jp/articles/2009/03/12/sparc_viii_fx/001.html






[富士通、次期スパコン向けHPC-ACEアーキテクチャ]の続きを読む

平成25年度(春期試験) ITパスポート,基本情報 解答速報まとめ はこちら(2013/04/21追記)






平成24年度(春期試験) ITパスポート,基本情報 解答速報 はこちら(2012/04/15追記)
平成23年度(秋期試験) ITパスポート,基本情報 解答速報 はこちら(2011/10/16追記)
平成23年度(特別試験) ITパスポート,基本情報 解答速報 はこちら(2011/07/10追記)
平成23年度 情報処理技術者試験 特別試験 解答速報はこちら(2011/06/26追記)
平成22年度(秋期) 情報処理技術者試験 解答速報はこちら(2010/10/18追記) 2010 4/18追記
平成22年度(春期) 情報処理技術者試験 解答速報まとめはこちら

2009 10/18追記
平成21年(秋期)情報処理技術者試験 解答速報はこちら


平成21年(春期)情処 解答速報はこちら
情報処理技術者試験 2chの様子



↓合格発表についての本家のページ
平成21年度春期試験 合格発表スケジュール

次のものは、5/26(火)正午に合格発表予定。
●ITパスポート試験(IP)
●基本情報技術者試験(FE)
●初級システムアドミニストレータ試験(AD)


次のものは、6/30(火)正午に合格発表予定。
●応用情報技術者試験(AP)
●プロジェクトマネージャ試験(PM)
●データベーススペシャリスト試験(DB)
●エンベデッドシステムスペシャリスト試験(ES)
●情報セキュリティスペシャリスト試験(SC)
●システム監査技術者試験(AU)



[情報処理技術者試験の合格発表は5/26(火)正午予定]の続きを読む
新型インフルエンザ騒ぎでマスクが品薄ですが、
手持ちのマスクを手軽に殺菌する方法を聞いてきました!
これでしばらくマスクの再利用ができます

1.ジップロックなどの密封できる袋を用意。
2.マスクをそれに入れてしっかり閉じる。
3.鍋にお湯を沸かす。
4.マスク入りジップロックに投入して、フタをして10分ほど煮込む。
5.完了。


これは微生物学がご専門の先生に伺ったお話です。

(たぶん大丈夫だとは思いますが)私がなにか聞き間違えている可能性も
無きにしもあらずなので、その点ご了承ください。

[マスクの殺菌(再利用、再生) …新型インフルエンザ騒ぎ]の続きを読む
パソコンを持ち運ぶためにカバンを買ってみた。

これ。
SANWA SUPPLY BAG-EVA1BK セミハードPCケースSANWA SUPPLY BAG-EVA1BK セミハードPCケース
(2003/06/01)
不明

商品詳細を見る


サイズはW435×D70×H305mm(内径)。
が、ひとつ問題が発覚。
重すぎるものを入れると、取っ手が抜けてしまうorz
具体的にはA4ノートPCを2台入れた状態で数分持ち歩いた時点で発生。

初めは何が起こったのか分からず、手元に残った取っ手と地面に転げたカバン本体を交互に見比べて呆然w
物理的な衝撃は吸収してくれたようでPCには影響はなかったので、これはこれで優秀。心理的な衝撃はあったが(藁

問題点は、取っ手が取り付けられている板の強度が弱くて上からの引っ張りでたわんでしまい取っ手を取り付ける金具が傾きすっぽ抜けやすい角度になることと、取っ手自体が上からの引っ張りでたわんでしまいすっぽ抜けること。

前者にたいして内側から金属板をあてて対処してカバン上面の板の強度は確保したが、取っ手のほうはまだ手つかず。やはり力が加わると取っ手が抜けてしまう。
アイデアはあるので、どっかでちょうどいい部品があったらやってみようと思う。

文字だと分かりづらいなぁ。そのうち写真もうpして対処法を残しておこう。

というか、商品のテストでは発覚しなかったのかなぁ。。。
http://headlines.yahoo.co.jp/hl?a=20090514-00000141-yom-bus_all
NECが世界最先端・最高性能の「次世代スーパーコンピューター」の開発から撤退 (GIGAZINE)

NEC、国策の次世代スパコン開発から撤退、「事業は継続」と強調 (ITpro)
[続報]国策スパコン、複合システム断念へ (ITpro)
[続々報]「残念だが税金の無駄遣いにはしない」、国策スパコン開発リーダーに聞く (ITpro)

次世代スーパーコンピュータ・システムの構成を見直す
-世界最高性能のスパコン開発計画の着実な推進に向けて-

文部科学省「次世代スーパーコンピュータ・プロジェクト」への参画形態の見直しについて
~NECはスーパーコンピュータ事業を継続~


NEC、「次世代スーパーコンピュータ・プロジェクト」への参画形態を見直し
【IT政策】次世代スパコン開発、理研が抜本見直し発表–NECと日立が計画離脱 [05/14]
【電機】NEC:次世代スパコン撤退、巨額の開発費負担を削減…将来的には事業の大幅縮小や完全撤退も [09/05/14]


これは残念だ…
基礎科学にかかわる部分は削らないでほしい
時代が悪いのか

京速のベクトル部はどうなるの??
全部スカラーでやるということか…
昨日勇ましいニュースがあったところなのに残念
富士通が世界最速CPU開発 日本メーカー、10年ぶり記録更新






[NEC、次世代スパコン撤退 ...]の続きを読む
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。