タグ

関連タグで絞り込む (157)

タグの絞り込みを解除

メモリに関するiwwのブックマーク (293)

  • Linuxエンジニア日記 ページキャッシュの効率化

    メモリチューニングの一環としてページキャッシュの効率化を纏めてみます。 ちなみにLinuxは空きメモリをがしがしファイルI/O用のキャッシュとして利用しますが、 メモリはページ単位で分割管理されており、これらのキャッシュをページキャッシュと言います。 (これらは使われっぱなしではなく頻繁に割当て、解放が行われています) ではページキャッシュのチューニングとは何をするかと言うと、 要は無駄なページキャッシュを残さないようにしてあげればよいのです。 通常のI/O処理はライトバックで処理されているので、ページキャッシュに書き込まれた時点で プロセスには書き込み完了通知が返され、キャッシュ上のデータはバックグランドでディスクに 書き込まれていきます。 ライトバックしたキャッシュ上のデータは解放可能なデータとなりますので、 頻繁にライトバックをしてあげる事でキャッシュの解放サイクルを早める事が出来ま

  • Tagoo : MSXソフトウエア検索 : TURBO BOOSTER

    たーぼぶーすたー turbo booster (京都メディア) 1991年発売 DISK(2DD*1) ¥3000 MSXturboR

  • NoSQLの成功は1:10問題にかかっている:Kenn's Clairvoyance

    ここ2-3年ほど、いわゆる非SQL系データベースがホットな話題になってきています。このムーブメントを総称して「NoSQL (Not-only SQL)」と呼ばれることが多いようです。まるでSQLを否定しているかのような誤解を招きやすい用語ですが、かといってキー・バリュー型データストアや列指向DBを総称できる他の呼び方もないので、このエントリではNoSQLという用語を使うことにします。 OracleMySQLなどのSQLデータベースが成熟していく一方で、SQLデータベースを特徴づける弱点である柔軟性のなさ、堅牢さと引き換えに犠牲になった更新性能の低さ、スケールアウトの難しさなどから、「何でもかんでもRDB」から「目的に応じた永続化」が模索される流れになってきました。 時を同じくして、キャッシュサーバの世界でも、MemcachedのもつシンプルなAPIの使いやすさが評価される一方、LRUによ

    NoSQLの成功は1:10問題にかかっている:Kenn's Clairvoyance
  • naoyaのはてなダイアリー - Linuxのページキャッシュ

    世間では PHP が、Perl が、と盛り上がっているようですが空気を読まずまたカーネルの話です。今回はページキャッシュについて。 /dev/shm に参照系DBを持っていくと I/O 負荷が激減した件(当たり前だけど) - drk7jp で、ディスク上にあったファイルを /dev/shm (tmpfs) に移したら I/O 待ちがなくなって負荷がさがった、ということなんですがおそらくこれは tmpfs に置く必要はないかなと思います。Linux (に限らず他の OS もそうですが) にはディスクの内容を一度読んだらそれはカーネルがキャッシュして、二度目以降はメモリから読む機構 = ページキャッシュがあります。tmpfs にデータを載せることができた、ということは物理メモリの容量に収まるだけのデータサイズかと思うので、放っておけば該当のファイルの内容すべてがメモリ上にキャッシュされて io

    naoyaのはてなダイアリー - Linuxのページキャッシュ
    iww
    iww 2010/08/06
    insane【形】正気でない、狂気の
  • Linuxのページキャッシュをきれいさっぱり消すには? | Tricorn Tech Labs

    oktです。 インフラ系とか社内システムとかいろいろ担当してます。 Linuxのカーネルは過去に読み込んだディスクの内容をメインメモリに保持する機能を持ってます。 重要な機能ですが、普段サーバ等を触っている分には意識しないことが多くハマったりします。 意識しないでプログラムの検証なんかしていると、キャッシュ有無で大きく結果が違ったりします。 ちなみにページキャッシュ自体についてはhatenaのnaoyaさんの記事を読むのをお勧めします。 そんなわけで、意図的にキャッシュを消したい場合には?という方のためにメモを残してみます。 linux kernel 2.6.16以降、以下の操作でページキャッシュを強制的にクリアすることができます。 ちなみに、RHEL4は2.6.9ベースのカーネルですが、RHEL4.6から実装されています。 # echo 1 > /proc/sys/vm/drop_cac

    Linuxのページキャッシュをきれいさっぱり消すには? | Tricorn Tech Labs
  • Codian - ポインタと文字列とCStringと

    更新日: 2007/11/19 動作確認環境:Windows XP Professional SP2, Visual C++ 6.0 Professional SP6 サンプルプロジェクト(Visual C++ 6.0): MxA09_VC6.zip サンプルプロジェクト(Visual C++ 6.0用、サンプルプログラム13のみ): MxA09_Unicode_VC6.zip 最後は文字列についてです。 MFCにはとても便利なCStringクラスがありますが、それをどう使えばいいのか、やや遠回り気味に説明したいと思います。 ちなみに文字列やポインタについては、Codianの「ポインタ」でも解説していますのでそちらもどうぞ。 C/C++言語の文字列型 なんてものは存在しません!! Visual Basic他、多くの言語は簡単に文字列を操作できる「文字列型」を持っていますが、C/C++言語に

    iww
    iww 2010/06/15
    恋しさとせつなさと心強さと
  • yebo blog: クヌース教授は間違っていた

    2010/06/15 クヌース教授は間違っていた Slashdotによれば、この数十年間、クヌース教授をはじめとするコンピュータ科学者が最適としてきたアルゴリズムを10倍高速にする方法をPoul-Henning Kamp (PHK) というハッカーが見付けたという。その論文タイトルは「You're Doing It Wrong (あなた達のやっている事は間違っている)」で、ACM Queueに掲載されている。別にクヌース教授の考えが間違っているわけではなく、アルゴリズム的には正しいが、実用レベルでは、OSには仮想メモリがあり、VMと干渉しないようにすれば簡単に高性能なシステムが作れる。従来の考え方はモダンな計算機を考慮に入れていないので、現実的には不適合を起こしている。具体的にはヒープにBツリーの要素を取り込んだBヒープというデータ構造を使うことで、バイナリヒープの10倍のパフォーマンスを

  • Valgrind - JULY’s diary

    メモリーリークのチェックツールを探していて、なかなか良いのがないなぁ、と思っていたところ、やっとのことで見つけたのがこの Valgrind。 最初、memwatch にトライしたんだけど、ソースに memwatch のヘッダをインクルードして、memwatch.c を一緒にコンパイル・リンクするという手順で、「ひょっとしたらこういうパターンはだめかな」というのを思いついて、試して見たら見事にだめだった(^^;。 だめなパターンというのは「exit でプログラムを終了させる」パターン。memwatch の手順からして「atexit でログを吐き出すようにしてるんじゃないかなぁ」と思って、「だと _exit で抜けたら、ログに吐き出せないよなぁ」と想像した次第。チェックしようとしているプログラムが _exit を使っているんで、これじゃぁ使えないと。 あと、mtrace も試して見たけど、確か

    Valgrind - JULY’s diary
  • 革命の日々! mtraceの使い方

    何回調べても忘れてしまうシリーズ 今回はmtraceの使い方。 mtraceというのはmallocやfreeなどのメモリ管理系の関数をHookして、メモリリークを追跡してくれる便利なライブラリ関数です。 glibc付属なので特殊なソフトのインストールが必要ないのが利点。 使い方の注意点と手は Electric Fence などのmallocを乗っ取るライブラリと共用できないこと(アタリマエだ) malloc/freeのたびにファイルに書くので結構なオーバーヘッドを伴うこと。 スレッドセーフじゃないこと(これはmallocのhookの仕組みがタコいんです) mtrace()関数を呼び出すとトレースを開始する。というセマンティクスなのでシェルなどからイマイチ使いづらい所も欠点と言える。 まあ、実例を見てください。 まず、こういうファイルを用意 mtrace_on.c ---- #include

  • ドライバーダウンロード RUF2-LDシリーズ | BUFFALO バッファロー

  • @IT:メモリの使用量を制限するには

    Linuxは、ユーザーが使用するメモリ量をulimit(Bシェル系の場合)コマンドで制限できる。 rootでログインして、-aオプションを付けてulimitコマンドを実行する。すると、現在の状況が表示される。 # ulimit -a core file size        (blocks, -c) 0 data seg size         (kbytes, -d) unlimited file size             (blocks, -f) unlimited max locked memory     (kbytes, -l) unlimited max memory size       (kbytes, -m) unlimited ←メモリ使用量は無制限 open files                    (-n) 1024 pipe size     

  • クロマの戯れごと Linuxの共有メモリ(shm_open系)はただのファイルマップ?

    あるシステムで、shm_openとやったときに、なぜか失敗してエラーコードにENOSYSが帰ってくることがあって、 「まさか共有メモリがノーサポートなわけなかろう、、、」 ということで調査してみました。 すると、どうやらLinux(glibcのLinuxの実装)ではまず/dev/shmの存在を確認してから、もしそれが無い場合は、/proc/mountsを調べて、tmpfsかshmfsの存在を調べるみたいでした。 それもなければENOSYSと。。。。 glibcのソースをみてようやく判りました。 結局Tmpfsでマウントしたディレクトリ以下に、なんらかのファイルを作ってるだけという感じですね。 で、まぁあとはmmapとかしますわな。 ということで、適当なディレクトリを作って、tmpfsでmountしてやるとENOSYSも返さずにさくさく動きました。 というか、この動作よくよく考えて見ますと、

  • ServersMan@VPSでMySQL InnoDB Pluginをあきらめない - SH2の日記

    DTIの仮想専用サーバServersMan@VPSを借りてみました。 Entryプランはメモリが256MBでまあ足りるだろうと思っていたのですが、ServersMan@VPSではOpenVZという仮想化ソフトウェアを使っていて、なんとスワップの利用が禁止されているのだそうです。つまりなにがなんでも総メモリ使用量を256MB以下に抑える必要があります。ちょっと難しそうです。 とりあえずMySQL 5.1.45をインストールして、すべてデフォルトで起動するとこんな感じです。 # free -m total used free shared buffers cached Mem: 256 23 232 0 0 0 -/+ buffers/cache: 23 232 Swap: 0 0 0 # service mysql start Starting MySQL. SUCCESS! # free

    ServersMan@VPSでMySQL InnoDB Pluginをあきらめない - SH2の日記
    iww
    iww 2010/04/28
    MyISAM脱出のために勉強
  • [ThinkIT] 第5回:カーネルをチューニングする (4/4)

    メモリ関連のチューニング項目としては以下のようなものがあります。スワップの利用やダーティなページの扱いに関するパラメータがあります。意味や効果を理解した上で設定を行う必要があります。

  • malloc(3)のメモリ管理構造 VA Linux Systems Japan

    これらの問題を検出する為の色々なツールも存在しますが、mallocライブラリ側でも簡単なチェック機能が備えられています。これは予めライブラリ内に組み込まれている為、簡単に使用することができ、アプリケーション側の修正も必要ありません。ただ簡単な仕組みの為、余り詳細なチェックは行えません。上記の(1)と(2)には対応が可能です。以下、この機能の仕組みについて説明します。 これは環境変数MALLOC_CHECK_に特定の値を設定する事により、ライブラリ側にデバッグ機能使用の通知を行いチェック機能を働かせるものです。この機能はmallocのmanにも書かれています。ここではライブラリでの内部的な処理についても述べて行きます。 MALLOC_CHECK_の値はpublic_mALLOc()コール時の最初の処理でcheck_actionという静的変数に設定されます。これは、public_mALLO

    iww
    iww 2010/03/15
    MALLOC_CHECKについて
  • 64ビットDebianのためのUSBメモリづくり - わさっきhb

    サーバ用PCが手に入ったので,久しぶりに,Debian(lennyのamd64)のためのインストーラUSBメモリを作って,インストールをしました. 用意するもの 256MBのUSBフラッシュメモリ インターネットに常時接続のWindows PC*1 参考にしたブログエントリ debian Linux USBメモリからUSBメモリへのインストール1 : 深夜のこーだ Ayas置き場 » Blog Archive » syslinuxでMBRに書けない件と、Vista でwubiが起動しない件 今日のまとめ3 ダウンロード http://http.us.debian.org/debian/dists/lenny/main/installer-amd64/current/images/hd-media/gtk/ から,initrd.gzとvmlinuz http://www.kernel.org

    64ビットDebianのためのUSBメモリづくり - わさっきhb
  • debian Linux USBメモリからUSBメモリへのインストール1 | 深夜のこーだ

    debian Linux USBメモリからUSBメモリへのインストール1 インストールUSBメモリの準備 EVEREX CE1210JにはCDドライブが付いてないのでUSBメモリからインストールしようと思います。Windowsも使うので、インストール先はUSBメモリにすることにしました。 USBをさした状態で起動するとLinux、さしていなければWindowsが勝手に起動してくれるようにと考えています。 インストール元もインストール先もUSBメモリなので、USBメモリが2いることになります。 まずはインストーラ用のUSBメモリを準備します。 うちのメインはWindowsなので、全ての作業をWindows上から行えるように、インストーラを起動するブートローダにはsyslinuxを使用します。 電源投入後のインストーラ起動までの動作は BIOS→USBメモリのMBR→ブートローダ(sysli

    debian Linux USBメモリからUSBメモリへのインストール1 | 深夜のこーだ
  • Doug Lea の malloc (dlmalloc) - bkブログ

    Doug Lea の malloc (dlmalloc) 小さなオブジェクトを大量に new しまくるプログラムを C++ で書いたところ、処理時間の多くが malloc() に費やされていることがわかりました。このような場合、自前でメモリ管理を行って最適化するという方法がありますが、なかなか大変です。 そこで、安易に高速な malloc に置き換えてみようということで、 Doug Lea の malloc (通称 dlmalloc) の最新版を試してみました。 dlmalloc の使い方 dlmalloc は 1ファイルをダウンロードしてビルドすれば使えます。次のように実行すると共有ライブラリ libdlmalloc.so を作れます。現時点でのバージョンは 2.8.3 でした。 % wget ftp://g.oswego.edu/pub/misc/malloc.c % gcc -O2

    iww
    iww 2009/12/22
    『シングルスレッドで動作するプログラムには不用意に libpthread.so をリンクしないこと、ということが重要なポイント』
  • 革命の日々! dlmallocが2005年に大幅バージョンアップしていた件について

    以前 dlmallocとglibc mallocはほぼ同じ。と書いたのだが、その知識は古かった。 という話。 関係者の皆様にはご迷惑をおかけして申し訳ありません。 #関係者ってダレ? 何が変わったかというと、 1.large-bin がリストじゃなくバイナリツリー管理になった。これで探索がO(n)からO(log n)になる 2.mspace APIの追加 1は一見速そうだけど、ほんまにでかいのは直接mmapいっちゃうので、ここでいうlarge size memoryのアロケートが現実のシステムではあまり発生しないと思われ。 mspaceってのはWindowsでいうところのCreateHeap(), glibc mallocでいうところのarenaを外部APIにしたようなモノ ただし、相変わらずマルチスレッド時にTLSを使ってキャッシュ効率を稼ぐテクは採用されていないのでマルチスレッド環境下

  • ext3でデータが破損!? メモリ管理で不整合(2/2) - @IT

    12月17日には、Andrei Popaが「rtorrent(注)を実行してファイルをダウンロードすると、ダウンロードしたデータが壊れている場合がある」という、一見まったく関連性のなさそうな報告を投稿しました。これに対して、ほかのユーザーからも同じ問題が起きているという内容のメールが投げられました。 この問題を解析していくと、 ext3ファイルシステムを利用している 2.6.19を利用している aptitudeやrtorrentを利用している 環境においてデータ破損が発生しているようです。 Andrew MortonやLinusが乗り込み、問題の解決に挑みました。問題を絞り込むと、aptitudeとrtorrentの共通点として、「mmapを利用している」ことが判明しました。mmapは、ディスク上のファイル領域をメモリ領域にマップする仕組みです。 長いデバッグ期間を経て、12月28日にLi

    iww
    iww 2009/12/01
    『Debian独自のパッチが当たっている2.6.18カーネルでしか発生しない』