タグ

memoryに関するtyoro1210のブックマーク (15)

  • メモリアライメントの話 @ゲームプログラマの小話[開発:メモリ] - Qiita

    コンシューマ機では割と知っておかないとおかしなことになるメモリのアライメントのお話です。自分の場合Windows上でゲームを作っていたときはほとんど意識していなかったため、コンシューマ機をやるときに「なにそれ?」となったトピックになります。 メモリアライメントはバイナリデータを読み込んでC++コードからアクセスしたり、適当なアドレスにnewしたデータをキャストする場合などに意識する必要が出てきます。 アライメントとは アライメントは alignment と書きます。英語の辞書を引くと『整列』といった意味で載っています。 アライメントを気にせずにデータをメモリ上に配置&アクセスすると、パフォーマンスが遅くなったり、ハードウェアによってはCPUが例外をはいて強制終了する、といったことがおこります。 例えば int や float など、4バイトの変数はメモリアドレス的に4バイトの境界に置かない

    メモリアライメントの話 @ゲームプログラマの小話[開発:メモリ] - Qiita
    tyoro1210
    tyoro1210 2019/12/03
    『その余った4bitには命令コードといった付加情報を付け加えることができるようになります』
  • Linux のプロセスが Copy on Write で共有しているメモリのサイズを調べる

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

    Linux のプロセスが Copy on Write で共有しているメモリのサイズを調べる
  • Linux のオーバーコミットについて調べてみた

    Linux のオーバーコミットについて調べてみた Linux のオーバーコミットのはなし(これを書いたのは Linux 2.6.38 のとき) Linux カーネルは実メモリ以上にメモリをプロセスに割り当てることができる この仕組みをオーバーコミット (over-commit) と呼ぶ オーバーコミットでは,とりあえずメモリを malloc させて仮のアドレスを返しておき, 実際に使われる段になってはじめて実メモリを確保する. 実験ただ malloc し続けるだけのプログラムを作って実験してみる. このプログラムをメモリ 1 GB + スワップ 1 GB のホストで実行してみると, $ free -t total used free shared buffers cached Mem: 1022404 82992 939412 0 4172 12280 -/+ buffers/cache:

    Linux のオーバーコミットについて調べてみた
    tyoro1210
    tyoro1210 2016/01/29
    ps aux で見れる apache メモリの合計値の割に、top だと cached に回ってる数値がデカいと思ったら 仮確保だから 走ってないプロセスは実メモリ持ってないのね。 MinSpareServers を高めにしてもメモリ的には安心。
  • MySQLの「temporary table (一時テーブル)」 と「tmp file(テンポラリファイル)」の違いと「Copying to tmp table」と「copy to tmp table」の違い | 田舎に住みたいエンジニアの日記

    MySQLの「temporary table (一時テーブル)」 と「tmp file(テンポラリファイル)」の違いと「Copying to tmp table」と「copy to tmp table」の違い

  • MySQL memory configuration check tool

    mymemcheck P�8�!V 0�:�!V #!/usr/bin/env perl use strict; use warnings; my @GLOBAL_BUFFERS = qw( key_buffer_size innodb_buffer_pool_size innodb_log_buffer_size innodb_additional_mem_pool_size net_buffer_length ); my @THREAD_BUFFERS = qw( sort_buffer_size myisam_sort_buffer_size read_buffer_size join_buffer_size read_rnd_buffer_size ); my @HEAP_LIMIT = qw( innodb_buffer_pool_size key_buffer_size sor

    MySQL memory configuration check tool
    tyoro1210
    tyoro1210 2016/01/26
    mysql のメモリ設定の適正値を探る為のツール (http://www.slideshare.net/Craftworks/my-sql-6113813
  • MySQLのメモリ設定の勘所 – sawara.me

    MySQLサーバーをダウンさせた夜は数知れず。 その度にmy.cnfの設定を見なおしてみてはトライし、治ったと思いきや突然のダウン。 サーバーがダウンしてしまう原因は何かと聞かれれば、「メモリです」と断言しましょう。 メモリ設定は諸刃の剣。 パフォーマンスを最大に引き出すこともできればそれと引き換えにサーバーをダウンさせてしまうこともできるんです。 今回はMySQLのメモリの設定の勘所というかたちで紹介しようと思います。 グローバルバッファとスレッドバッファ メモリの設定についてまず「グローバルバッファ」と「スレッドバッファ」について理解しておくことが大事です。バッファとは一時的な記憶領域・つまりはメモリの領域のことなのですが。 グローバルバッファ MySQLで使用する全体的なメモリ使用量を計算するには グローバルバッファ + (スレッドバッファ × コネクション数) = メモリ使用量 と

    MySQLのメモリ設定の勘所 – sawara.me
  • Apacheの子プロセスあたりの平均メモリ使用量を調べる | Hack

    tyoro1210
    tyoro1210 2016/01/25
    『ps aux | grep [h]ttpd | grep [a]pache | awk 'BEGIN{x=0}{x+=$6}END{ print x/NR }'』
  • MySQL とメモリに関するまとめ - LukeSilvia’s diary

    前回のエントリーデータベースを用いたセッションデータ管理についてで、MySQL とメモリの関係について良く分からない部分があると書きました。 実はここに関する理解はかなり曖昧な部分があって、調査して追記します。とくにメモリ利用量について。mysqld のプロセスが利用できるメモリの上限が、32bit OS の場合は3G 程度ということは、innodb_buffer_pool_size もこの制限を受け、これについての警告が、先に紹介したリファレンスマニュアルのものという理解だけどいいのだろうかというのが1つ。 2 つ目は、この理解があっているとすると、4G 以上のクラスのメモリをつんだサーバをDB サーバとして利用する場合、64 bit OS でないとリソースの有効活用ができないか。それとも、先に書いたとおり、OS レベルのキャッシュとして利用できるから、結果としてデータファイルを読み込む

    MySQL とメモリに関するまとめ - LukeSilvia’s diary
  • FreeBSDのメモリ使用量を確認するメモ | work.log

    FreeBSD でメモリ使用量を記録しようと思ったのでその確認方法のメモ。 Linux みたく free コマンドがないので top コマンドとかを使う。 top 普段は top で確認している。Linux だとあまり top しないけど、FreeBSD は高頻度で top してる。Linux よりフォーマットが見やすい。 # top -n last pid: 8563; load averages: 0.01, 0.00, 0.00 up 64+06:30:37 18:50:31 53 processes: 1 running, 52 sleeping Mem: 267M Active, 743M Inact, 382M Wired, 420K Cache, 213M Buf, 579M Free Swap: 512M Total, 10M Used, 502M Free, 1% Inu

  • Linux のメモリー管理(メモリ―が足りない?,メモリーリークの検出-防止)(Kodama's tips page)

    サ−バ等に使っているPC のメモリが十分かどうか気になる事は多いと思う. 調べ出すと フリーメモリーの不足や SWAP にメモリーがはみだしている様子など 心配な事がいろいろでて来る. PC の動作が遅くなる原因は様々な要因が絡み合っているので, 表面に現れた症状だけでは効果的な対策が分からない事もある. 以下では, メモリ−関連にしぼって解説する. メモリの状況を調べる メモリ−は十分なはずなのに 余裕が無い? どのプロセスがメモリを消費しているのか? メモリーのリークを検出する方法? 防止する方法? メモリ−は十分なはずなのに SWAP を使ってる? じゃ, 当のメモリ−不足はどうしたら分かるの? メモリーと SWAP 領域はどのくらい確保すると良いのか メモリの状況を調べる メモリの利用状況を調べる方法は, free, top, ps, vmstat, /proc/meminfo

  • PHPのメモリの使い方 - ぱんぴーまっしぐら typo-H

    unset()をしているが、メモリの消費量は変化しない。 えぇぇぇ!ということで調べてみた。 <?php $memory_usage = memory_get_usage(); $arr = range(1,10000); echo memory_get_usage() - $memory_usage . "\n"; // 785888 unset($arr); echo memory_get_usage() - $memory_usage . "\n"; // 65072 ?> ちゃんと開放されてます。つか、オーバーヘッドひどいな。 <?php $memory_usage = memory_get_usage(); $arr = range(1,10000); echo memory_get_usage() - $memory_usage . "\n"; // 785896 $arr2

    PHPのメモリの使い方 - ぱんぴーまっしぐら typo-H
  • PHPでメモリ上に一時ファイルを作る - hnwの日記

    blog.plastik.jp » PHP5 の fgetcsv() で読み込み内容が腐る現象」という記事を読みました。fgetcsv()だとSJISのCSVファイルがうまく読めないので、UTF-8に直してテンポラリファイルに保存してfgetcsvで読み込む、という筋書きのようです。 ちゃんとtmpfile()を使っていたりしてナイスなコードだと思います。でも、すぐ不要になるデータをディスクに書き込むのはイマイチじゃないでしょうか。ここはメモリに書いた方がカッコいいと思うんです。僕なら下記のようにします。 <?php $data = file_get_contents("example.csv"); $data = mb_convert_encoding($data, "UTF-8", "Shift_JIS"); $fp = fopen('php://memory', 'r+'); fw

    PHPでメモリ上に一時ファイルを作る - hnwの日記
  • メモリ管理のお勉強 - 書きとめておきたいことたち

    HEAP領域とSTACK領域の間の未使用領域は、下記の領域に使われる 共有ライブラリのロード領域 メモリ・マップト・ファイル用領域 プロセス間共有メモリ用領域 メモリ・マップト・I/O用領域 メモリ・マップトによる追加HEAP領域 小さなサイズをmallocをしたときはHEAP領域に確保されるが、大きなサイズのメモリをmallocしたときはメモリマップ領域に確保される(glibcの場合) すべてmmapにするとメモリのフラグメンテーションがおきないが、mmapは重いしページサイズ単位しか扱えない。 32bit環境では論理メモリが2^32=4GBまでしか確保できない。このうちOSがメモリの上位1or2GBを使うので、実際にはアプリは3or2GBまでしかメモリは使えない。64bit環境になると、もっと使えるようになる。 HEAP領域は下に(上位アドレス方向)、STACK領域は上に(下位アドレス

    メモリ管理のお勉強 - 書きとめておきたいことたち
  • 32bit CPUはメモリを4GBしか使うことができない 【▲→川俣晶の縁側→IT都市伝説】

    32bit CPUはメモリを4GBしか使うことができない § 32bit CPUは4GB(ギガバイト)のメモリ空間しか持っていません。 ですから、4GB以上のメモリを接続することはできず、それを使うこともできません。 なんてことはないのだ、実は § 実際には、32bit CPUであっても、4GBよりも大きなメモリを扱えるケースが多くあります。 32bit CPUが4GBより大きなメモリを扱えないというのは、アーキテクチャに関するまったくの不勉強そのもの、と言えます。OSや開発ツールが見せかけている構造と、実際の構造の相違を混同している、と表現しても良いでしょう。 物理メモリ空間と論理メモリ空間 § 物理的にCPUに接続できるメモリのメモリ空間は、主にCPUからアドレスバスが何出ているかで決まります。(物理メモリ空間) それに対して、プログラムがアクセス可能なメモリ空間は、CPUの論理的な

  • 【特別レポート】32bit Windowsの管理外領域をRAM Diskに使う

    このところのメモリ価格の下落から、メインメモリは2GBどころか4GB以上も余裕で搭載できるようになった。2GBのDDR2 DIMMを4枚、計8GB分購入したとしても2万円で十分おつりが来る。とはいえ、32bit OSを使っている限り、OSは約3.5GB以上のメインメモリを認識できず、それ以上のメモリを搭載したとしても無駄になってしまう。64bit OSを利用すればこの問題も解決するが、ドライバの対応やアプリケーションの互換性などに問題があり、使いたくても使えない状況だ。 しかし、32bit OSで認識できないメインメモリ領域を活用できる手法が見つかり、2ちゃんねるWindows板を中心に話題となっている。その手法とは、「Gavotte Ramdisk」というRAM Disk作成ツールを利用し、メインメモリのOS管理外領域にRAM Diskを作ってしまおうというものだ。 メインメモリを手軽

  • 1