タグ

メモリに関するakaneharaのブックマーク (17)

  • Linuxのメモリまわり - tmtms のメモ

    ちょっと前から groonga を使うとプロセスサイズが肥大化するのが気になっていて、メモリ関係を色々調べていたのですが、そこでわかったことなどを書いときます。 malloc() しただけではOSのメモリは使用されない メモリを1GB獲得するだけのこんなプログラムを作って実行してみます。 #include <stdlib.h> #include <unistd.h> #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char *p; char buf[1024]; int i; p = malloc(1024*1024*1024); gets(buf); for (i=0; i<1024*1024; i++) memcpy(p+i*1024, buf, sizeof(buf)); pause(

    Linuxのメモリまわり - tmtms のメモ
  • いまさら聞けないLinuxとメモリの基礎&vmstatの詳しい使い方 - Qiita

    さくらインターネット Advent Calendar最終日は、硬派にLinuxのメモリに関する基礎知識についてみてみたいと思います。 最近はサーバーを意識せずプログラミングできるようになり、メモリの空き容量について意識することも少なくなりましたが、いざ低レイヤーに触れなければいけないシチュエーションになった際に、OSを目の前に呆然とする人が多いようです。 基的にLinux のパフォーマンスについて、メモリをたくさんつめばいいとか、スワップさせないほうが良い とか、このあたりは良く知られたことだと思います。 ただ、なんとなく ps コマンドや free コマンド などの結果を見るだけでなく、もう少しメモリのことについて掘り下げてみてみたいと思います。 メモリとキャッシュ Linux におけるメモリの状態を大きく分けると「使用中のメモリ」「キャッシュ」「空きメモリ」「スワップ」の 4 つに分

    いまさら聞けないLinuxとメモリの基礎&vmstatの詳しい使い方 - Qiita
  • Linux のプロセスが Copy on Write で共有しているメモリのサイズを調べる

    Linux は fork で子プロセスを作成した場合、親の仮想メモリ空間の内容を子へコピーする必要があります。しかしまともに全空間をコピーしていたのでは fork のコストが高くなってしまいますし、子が親と同じようなプロセスとして動作し続ける場合は、内容の重複したページが多数できてしまい、効率がよくありません。 そこで、Linux の仮想メモリは、メモリ空間を舐めてコピーするのではなく、はじめは親子でメモリ領域を共有しておいて、書き込みがあった時点で、その書き込みのあったページだけを親子で個別に持つという仕組みでこの問題を回避します。Copy-On-Write (CoW) と呼ばれる戦略です。共有メモリページは、親子それぞれの仮想メモリ空間を同一の物理メモリにマッピングすることで実現されます。より詳しくは コピーオンライト - Wikipedia などを参照してください。 この CoW に

    Linux のプロセスが Copy on Write で共有しているメモリのサイズを調べる
  • Kodama's tips page

    Kodama's home / tips. Linux ディスクキャッシュの開放 以下は Linux 2.6.16 以降. 2.6.15 以前では, /proc/sys/vm/bdflush で行う. 概要 一時的にキャッシュを開放したい場合 ディスク装置のバッファキャッシュ キャッシュのメモリー使用量の調整 キャッシュの書き込み間隔の調整 概要 ディスク装置の中のディスクの回転速度や読み書き速度と コンピュータのデータ転送速度には大きな差がある. この速度の違いを調整するために, 一時的なデータの置き場所として使われるものをバッファキャッシュと云う. ディスク装置に組み込まれたバッファキャッシュと, 主メモリーの空いた部分にとるバッファキャッシュの2段階があることに注意. 通常は気にする必要は無いが, 能力の測定でファイルの読み書きを行う場合などに影響する. Linux では, 主メモリ

  • 減り続けるメモリ残量! 果たしてその原因は!? 第1回 (1/3) − @IT

    減り続けるメモリ残量! 果たしてその原因は!?:Linuxトラブルシューティング探偵団 番外編(1)(1/3 ページ) NTTグループの各社で鳴らした俺たちLinuxトラブルシューティング探偵団は、各社で培ったOSS関連技術を手に、NTT OSSセンタに集められた。普段は基的にNTTグループのみを相手に活動しているが、それだけで終わる俺たちじゃあない。 ソースコードさえあればどんなトラブルでも解決する命知らず、不可能を可能にし、多くのバグを粉砕する、俺たちLinuxトラブルシューティング探偵団! 助けを借りたいときは、いつでもいってくれ! OS:高田哲生 俺はリーダー、高田哲生。Linuxの達人。俺のようにソースコードレベルでOSを理解している人間でなければ、百戦錬磨のLinuxトラブルシューティング探偵団のリーダーは務まらん。 Web:福山義仁 俺は、福山義仁。Web技術の達人さ。Ap

    減り続けるメモリ残量! 果たしてその原因は!? 第1回 (1/3) − @IT
  • perlref - Perlのリファレンスとネストしたデータ構造 - perldoc.jp

    This is complete documentation about all aspects of references. For a shorter, tutorial introduction to just the essential features, see perlreftut. Before release 5 of Perl it was difficult to represent complex data structures, because all references had to be symbolic--and even then it was difficult to refer to a variable instead of a symbol table entry. Perl now not only makes it easier to use

  • クロージャとメモリリーク - Pixel Pedals of Tomakomai

    WEBアプリでありそうなこんなコードがあります。flushでデータを排出するのですが、そのときに$app->run内で$app->{flush_fanc}に関数リファレンスを渡すと、$app->flushでそれを終了処理として呼びます。 package main; { my $app = App->new(); $app->run(); $app->flush(); } print "end?n"; さて、Appクラスのrunを実装します。このとき、flush時に依頼する終了処理としてAppクラスの"メソッド"を使いたい場合、単純な関数リファレンスだとメソッドとして渡せないので、クロージャを渡してみます。ここでは、終了処理としてhelloメソッドを、きちんと$selfのメソッドとして呼び出したいとします。 package App; sub new{bless{}, shift} sub h

    クロージャとメモリリーク - Pixel Pedals of Tomakomai
  • プロセス毎のメモリ消費量を調べたい時に使えるコマンド - Qiita

    # ps aux | grep unicor[n] USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND user 1111 0.0 10.4 479180 177440 ? Sl Aug16 0:38 unicorn worker[0] -D -E production -c /RAILS_ROOT/config/unicorn.rb user 2222 0.0 10.5 547060 178604 ? Sl Aug16 0:39 unicorn worker[1] -D -E production -c /RAILS_ROOT/config/unicorn.rb user 3333 0.0 10.5 479180 178764 ? Sl Aug16 0:26 unicorn worker[2] -D -E production -

    プロセス毎のメモリ消費量を調べたい時に使えるコマンド - Qiita
  • shared_ptrとゲームプログラミングでのメモリ管理

    constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだGenya Murakami

    shared_ptrとゲームプログラミングでのメモリ管理
  • /proc/meminfoを考える - めもめも

    通りすがりの貴方・・・・ /proc/meminfoのあっちの値とこっちの値を足したら、なんでそっちの値と同じにならないの・・・・ と悩んだことありますよね? /proc/meminfoは、カーネルが内部的に管理している枠組みでのメモリ情報をそのまま出しているので、残念ながらユーザ視点で知りたいメモリ情報とは一致しません。 とはいえ、変な解釈をして無意味に悩まないために、それぞれの値の意味合いと項目間の関係を知っておくのは有意義です。私の理解の範囲で、それらの関係をまとめていきます。 #私の理解も完璧ではないので、間違いあればやさしくご指摘お願いします。 参考資料 http://mkosaki.blog46.fc2.com/blog-entry-1007.html 2011/09/07 追記: tmpfsがSwapCachedに含まれるのは幻想でした。tmpfs=Shmemに修正しました。

    /proc/meminfoを考える - めもめも
  • 【RHEL】linuxメモリのfreeとmeminfoの関係を図解し利用率の計算方法を説明してみる - のぴぴのメモ

    はじめに linuxのメモリ利用容量(空き容量)の考え方 linuxのメモリ利用容量/空き容量の計算方法 ■RHEL7 【freeコマンドとmeminfoの図解】 【計算方法】 freeコマンド表示例 /proc/meminfo表示例 ■RHEL6 【freeコマンドとmeminfoの図解】 【計算方法】 freeコマンド表示例 /proc/meminfo表示例 ■RHEL5以前 【freeコマンドとmeminfoの図解】 【計算方法】 freeコマンド表示例 /proc/meminfo表示例 蛇足 その1:無名ページとファイルページ その2:図解の内容のツッコミ その3:RHEL6の計算 その4:Inactiveを空き領域とすることは間違い。 はじめに linuxサーバを利用する上で何時も頭を悩ますものの一つが、メモリ利用状況の評価(メモリ利用率)ではないでしょうか。私も悩みます。そこで

    【RHEL】linuxメモリのfreeとmeminfoの関係を図解し利用率の計算方法を説明してみる - のぴぴのメモ
  • The Linux Kernel

    David A Rusling david.rusling@arm.comv0.8-3 January 25, 1999 JF Projectv0.8-3 December 2000 *フレーム表示* 書は、Linux カーネルの仕組みを知りたい Linux 愛好家のためのものです。これは 内部構造のマニュアルではありません。むしろ Linux で使用されている原理や メカニズムを解説したものであり、Linux の動作原理とはどういうもので、なぜそれ が採用されているのかを説明するものです。 Linux という対象は常に変化しています。書がベースにしているのは現在の安定 版である 2.0.33 のカーネルソースですが、これは個人や法人の大部分で使用されて いるのがこのバージョンだからです。 また、書は自由に配布してもらってかまわないので、一定の条件のもとにではあり ますが、複製や再配

  • データ型のアラインメントとは何か,なぜ必要なのか?

    以前このサイトとブログに,何度かアラインメントに関する記事を書きました (サイト内関連ページ参照). そのせいか「アラインメント」で検索して来てくれる人が多いので, 過去の記事に加筆修正してこのページを新たに作成しました. 加筆した点は次のとおりです. アラインメントとメモリアクセス回数の関係をわかりやすくするため, (ほんの少し) 図を導入しました. 「データがアラインされていないとメモリアクセス回数が増える」 と言葉で説明しているサイトは多いのですが, 図で示しているところはまだ見たことありません. アラインされていないアドレスにデータを書き込む場合, 読み出しの場合以上にメモリアクセス回数がかかる可能性があることを追記しました. 以前は「複合データ型 (配列,構造体,共用体) のアラインメント」はほとんど自明のことだと思っていたので軽く流していましたが, 意外なことにこれを解説してい

  • プログラミング言語Goで謎だった部分 — ありえるえりあ

    Recent entries Apache2.4のリリース予定は来年(2011年)初め(あくまで予定) inoue 2010-12-23 Herokuの発音 inoue 2010-12-20 雑誌記事「ソフトウェア・テストPRESS Vol.9」の原稿公開 inoue 2010-12-18 IPA未踏のニュース inoue 2010-12-15 労基法とチキンゲーム inoue 2010-12-06 フロントエンドエンジニア inoue 2010-12-03 ASCII.technologies誌にMapReduceの記事を書きました inoue 2010-11-25 技術評論社パーフェクトシリーズ絶賛発売中 inoue 2010-11-24 雑誌連載「Emacsのトラノマキ」の原稿(part8)公開 inoue 2010-11-22 RESTの当惑 inoue 2010-11-22 「プ

  • メモリプール

    CようにGC(ガベージコレクション)を持たない言語ではヒープ領域から確保したメモリの解放はプログラマの責任で行う必要がある。 しかし、実際にCやC++でプログラミングしたことがあるならわかるように確保したメモリを適切なタイミングで 解放するのはとても難しいとまでは言わないまでもあまり簡単なことではない。 単にfreeを呼び出すのを忘れたり、もしくはリストや木のような少し複雑なデータ構造を扱う際に 割り当てられたメモリを適切に解放できずにリークしてしまうようなことは普通に起こりうる。 モダンなOSではプログラム終了後にそのプログラムに割り当てられたメモリをOS側で解放してくれるので、 走らせてすぐ終了するようなプログラムではこのようなメモリリークは特に問題にならないこともあるが、 例えばWebサーバのように常時動き続けるようなソフトウェアでのメモリリークは致命的な問題を引き起こす。 この問題

  • C++11 スマートポインタの話 - ここは匣

    C++にはガーベジコレクタが言語的には存在しないので、動的に確保したオブジェクトのメモリの管理はプログラマが責任を持って管理しなければ、メモリリーク・リソースリークなどの問題を生じてしまいます。 今時のプログラマはこうした問題を引き起こすリスクを減らす為に、記述ミスの起こりやすい生のポインタを使い自力でnewとdeleteを記述する事を避けて、安全なスマートポインタ、即ちオブジェクトの寿命により自動的にメモリ解放を行う便利なポインタを利用するべきです。 しかし、スマートポインタと言っても種類が幾つかあり、落とし穴も存在するのでどういった状況でどれを利用するのが良いのかを考察してみます。 Dynamic memory managementを見てみても C++11から随分増えていますね http://en.cppreference.com/w/cpp/memory std::auto_ptr

    C++11 スマートポインタの話 - ここは匣
  • 1