タグ

メモリに関するkhikerのブックマーク (4)

  • LinuxでEDACを使いECCエラーを検出する

    メモリに記録されるデータというのは意外と誤ってしまうものです。 誤ったデータが記録されるにはいくつかの要因があり、メモリモジュールの物理的な経年劣化や、宇宙線によるビットの反転など、通常の手段では防ぐことが難しい、あるいは事実上不可能なものが多いです。 そこでそういった誤りを防ぐために、ECCという仕組みが開発されました。メモリアクセスに冗長性を持たせることにより、エラーを検出、可能ならば訂正まで行ってくれる心強い仕組みです(参照:http://e-words.jp/w/ECCE383A1E383A2E383AA.html)。 LinuxでECCを利用し、メモリエラーを検出するにはEDACというモジュールを用います。 EDACはかつてはbluesmokeという名前のLinuxカーネルそのものからは独立したカーネルモジュールでしたが、2.6.16以降のカーネルソースツリーにはデフォルトで組み

    khiker
    khiker 2016/07/04
    ECC, EDAC, CE, UE
  • 初期化してない変数と.bssセクション

    キーワード C言語, 初期化されていない変数, 静的確保, ゼロ初期化, スタートアップ これだけは覚えよう すべての初期化していない静的に確保される変数は.bssセクションに入っていて、0で初期化される。 すべての初期化していない静的に確保される変数が0で初期化されると思っていると、上司に怒られる。 .bssって何? .bssセクションはセクションのひとつです(セクションとは何かが知りたければ、infoを読みましょう)。名前は「Block Started by Symbol(シンボル名で示された番地から始まるメモリブロック)」の頭文字からきています。 このセクションは、ELF(Executable and Linkable Format)では次のように定義されています。 .bss This section holds uninitialized data that contribute

  • sbrk を使ってみる。

    2009年12月3日 (木曜日) 22:55:07 # Life sbrk を使ってみる。 Linux のメモリ管理についてふと気になったので深追い。 sbrk(0) の出力はヒープ領域の最後のアドレスをかえしてくれるっぽい。 しかし、sbrkだけをするプログラムを何度か実行してみたら、アドレスが毎回違う。 これが釈然としない。 personality で ADDR_NO_RANDOMIZE を指定してからバイナリを実行したら、 アドレスが一定になった。Virtual Address Randomization というのが行われているようだ。 $ ./sbrk.c 0x254e000 $ ./sbrk.c 0x1686000 $ ./sbrk.c 0x7f5000 $ ./personality-exec.c ./sbrk.c 0x622000 $ ./personality-exec.c

    khiker
    khiker 2009/12/04
    ADDR_NO_RANDOMIZE / sbrk(0)
  • Linux でプロセスのメモリー使用量をソート表示する

    Linux でプロセスのメモリー使用量を調べる、の巻 第三弾。 clmemo@aka: Linux でプロセスごとのメモリー使用量を調べる clmemo@aka: ps + grep の Tips 第一弾・第二弾では、特定のプロセス (firefox とか) のメモリー使用量を調べる方法を書いた。 今回は、特定のプロセスのメモリー使用量を調べるんじゃなくて、どのプロセスのメモリー使用量が多いかを調べる方法。 やり方は簡単。ps コマンドに --sort オプションを渡してソートしてあげるだけ。sort オプションの引き数には、ソートしたい項目の名前を使定する。 例えば、RSS の大きい順に並べる場合はかうする。 $ ps alx --sort -rss F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND 0 1000 1131

    khiker
    khiker 2009/05/13
    ps alx --sort --rss
  • 1