lynx   »   [go: up one dir, main page]

タグ

メモリに関するakatakunのブックマーク (15)

  • 減り続けるメモリ残量! 果たしてその原因は!?

    Mem行のfree(MemFreeと呼ぶことにします)は「空きメモリ量」ではなく、何の用途にも使っていない物理メモリ量と考えてください。「MemFreeが少ない→空き物理メモリ量が少ない→利用可能な物理メモリ量が足りない」という発想を防ぐためです。この場合、単純に物理メモリを追加しても、いつかはMemFreeが少ない状況に落ちていくため、解決にはなりません。 システム全体のメモリ利用量の監視は、freeのみを判断基準とするのではなく、もっと総合的に「利用可能な物理メモリ量」を計算する必要があります。 システムが利用可能なメモリ量を計算するには、Linuxのページキャッシュの扱いを理解する必要があります。LinuxはHDDなどのストレージに保存してあるデータの読み出し/書き出し時に確保したメモリをページキャッシュという形で保持します。 CPU はストレージのデータを直接読むことはできません。

    減り続けるメモリ残量! 果たしてその原因は!?
  • メモリとスタックとヒープとプログラミング言語 | κeenのHappy Hacκing Blog

    κeenです。 今回の話は別にRustに限ったものではないのですが、よくRustを始めたばかりの人がスタックとヒープが分からないと言っているのをみかけるので少しメモリの話をしますね。 厳密な話というよりは雰囲気を掴んで欲しいという感じです。 メモリは配列 プログラム(プロセス)のメモリには実行するプログラム(機械語)やグローバル変数/定数、関数の引数やローカル変数、その他プログラムで使うデータ領域などを置きます。 プロセスに割り当てられるメモリというのは、1つの巨大なのっぺらな配列みたいなものです。サイズも決まってます。64bit OSなら2^64 byteです。 0 2^64 +--------------- ----+ | | | | | ~~ | | +--------------- ----+ これは仮想的なメモリなので実際の物理メモリに2^64 byteの配列がドンと確保される訳

    メモリとスタックとヒープとプログラミング言語 | κeenのHappy Hacκing Blog
  • プログラマが知っておくべき、メモリ/ディスク/ネットワークの速度まとめ - Qiita

    注: 無線ネットワークは干渉などによりこの数値より遅くなる状況も十分ありえます。 ポイント メモリからの読み込みとディスクからの読み込みはランダムアクセスで1000倍程度違う とは言え、最近はディスクも結構速い きちんと繋がれた有線ネットワークからの読み込みは、ディスクより速い つまり、ディスクから読むより、同じデータセンターのマシンのメモリから読んだほうが速い モバイルネットワークだと100キロバイトのデータでも1秒以上かかることがある メモリからの読込速度の遅さは、CPUのクロック数も10G/s程度なのと、来はL1/L2キャッシュなどがあることを考えると通常意識しなくて良い 何故この参考値をまとめたか プログラミングをする際、どのくらいの時間でどのくらいのサイズ感の処理が出来るのかを考えられることが、ある一定規模以上のサービスを開発するときは必須条件になってくると思います。 なにより

    プログラマが知っておくべき、メモリ/ディスク/ネットワークの速度まとめ - Qiita
    akatakun
    akatakun 2019/04/02
    きちんと繋がれた有線ネットワークからの読み込みは、ディスクより速い,つまり、ディスクから読むより、同じデータセンターのマシンのメモリから読んだほうが速い
  • PCのメモリはどれくらい必要なの?用途別目安量や使用量の確認方法

    この比較では1GBあたり1,250円と5円ですから、メモリは1GBあたりの価格(容量単価)がHDDの250倍というわけでして。 メモリの容量単価がHDDに比べていかに高いかが、よく分かることでしょう。 尚、メモリやHDDの記憶容量のサイズは主にTBやGBで表され、メモリの場合には以下のような関係で表記されます。 1TB = 210GB = 1024GB1GB = 210MB = 1024MB1MB = 210KB = 1024KB1KB = 210B =1024BこれはPCが2進数を使って演算することに関係し、210(2の10乗)倍ごとに単位が変わります。 ところがHDDの場合では、一般の方にも分かりやすいように、210(2の10乗)ではなく103(10の3乗)倍ごとに単位を変えて表記するのが一般的です。 1TB = 1000GB1GB = 1000MB1MB = 1000KB1KB =1

    PCのメモリはどれくらい必要なの?用途別目安量や使用量の確認方法
    akatakun
    akatakun 2019/04/02
    スワップアウト(ページアウト)やスワップイン(ページイン)を繰り返すスラッシングという現象が発生する。スラッシングが発生するとメモリ・HDD間の読み書きの待ち時間が多くなる
  • プロセスのVSZ,RSSとfree,meminfo挙動を実機で確認 - のぴぴのメモ

    1.はじめに 1-1.この記事の要旨 1-2.(予習)メモリに関する指標とlinuxのメモリ挙動について 2.検証環境と検証方法 2-1.検証環境 2-2.検証方法 2-3.測定方法 (1)psコマンドによるVSZ,RSS情報の取得 (2)freeコマンドとmeminfo情報の取得 3.結果 3-1.全体の結果 3-2.プロセスのVSZ/RSS挙動 ポイント① malloc()した時の挙動→VSZのみ増加 ポイント② 1回目のデータread時→RSSは増えない ポイント③ データwrite→RSSが増加する 3-3.システムワイドな挙動(freeコマンド/meminfo) ポイント① malloc()した時の挙動→usedもAnonymousPageも増えない ポイント②1回目のデータread時→変化しない。 ポイント③ データwrite→used上昇、AnonymousPage上昇 4.

    プロセスのVSZ,RSSとfree,meminfo挙動を実機で確認 - のぴぴのメモ
  • WordPressのサーバがメモリ不足で落ちたので、SWAP領域を追加して応急処置 - Qiita

    はじめに 先日、ブログサイトとして運用していたWordPressのサーバがメモリ不足で落ちたので、実際にやった対処法をご紹介します。 原因は、深夜にヘッダー画像をアップロードしたり、切り取ったりを繰り返していたら、MySQLが死んだみたいです。 EC2 t2.microのインスタンスはWordPressのサーバに使用すると、ぎりぎり落ちるか落ちないかのスペックみたいですね。 # service mysqld status mysqld dead but subsys locked tail -100 /var/log/mysqld.log // 一部抜粋 2017-02-07 16:41:15 17577 [ERROR] InnoDB: Cannot allocate memory for the buffer pool 2017-02-07 16:41:15 17577 [ERROR]

    WordPressのサーバがメモリ不足で落ちたので、SWAP領域を追加して応急処置 - Qiita
    akatakun
    akatakun 2019/02/12
    ddコマンドでSWAPファイルを作成するのにbs分のメモリが必要なのでbsは小さくしてcountで調整すると良い
  • word11428.html

    簡単に書くよ リトルエンディアン(英:little endian)とは データをバイト単位で並べる際のやり方のひとつ であり 「最後」のバイトから順番にデータを並べるやり方のこと です。 順番に見ていきましょう。 まずは予備知識として ・ビット ・バイト ・エンディアン について簡単に説明します。 「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。 ビットは、コンピュータさんの世界における「0か1が入る箱」です。 あるいは、この「0か1が入る箱」の数を表す単位です。 例えば「4ビット」と言った場合は「0か1が入る箱が4つあるよ」の意味になります。 バイトは「ビットが8つ集まったもの」です。 0か1が入る箱(ビット)が8つ入るくらいの大きな箱がバイトだと思ってください。 あるいは、このデカい箱の数を表す単位がバイトです。 例えば「2バイト」と言った場合は「ビットが8つ

    word11428.html
    akatakun
    akatakun 2018/09/12
    32bit PCのint(4B)などの1Bで収まらないデータ型を最後から並べるのがリトル(機械にやさしい),最初から並べるのがビッグ(人間にやさしい)
  • pack テンプレート文字列 (Ruby 3.4 リファレンスマニュアル)

    [edit] 以下にあげるものは、Array#pack、String#unpack、String#unpack1 のテンプレート文字の一覧です。テンプレート文字は後に「長さ」を表す数字を続けることができます。「長さ」の代わりに`*'とすることで「残り全て」を表すこともできます。 長さの意味はテンプレート文字により異なりますが大抵、 "iiii" のように連続するテンプレート文字は "i4" と書き換えることができます。 テンプレート文字列中の空白類は無視されます。また、`#' から改行あるいはテンプレート文字列の最後まではコメントとみなされ無視されます。 整数のテンプレート文字のシステム依存性 各テンプレート文字の説明の中で、 short や long はシステムによらずそれぞれ 2, 4バイトサイズの数値(32ビットマシンで一般的なshort, longのサイズ)を意味しています。s,

    akatakun
    akatakun 2018/09/12
    Cの構造体を渡すときのように、システム依存のサイズとエンディアンに合わせるときはs!などを、ネットワークプロトコルやファイルフォーマットのように、 システムに依存しないデータを扱うときはnなどを
  • What is the difference between a __weak and a __block reference?

    I'm reading Xcode's documentation, and here is something that puzzles me: __block typeof(self) tmpSelf = self; [self methodThatTakesABlock:^ { [tmpSelf doSomething]; }]; The following is copied from the documentation: A block forms a strong reference to variables it captures. If you use self within a block, the block forms a strong reference to self, so if self also has a strong reference to the b

    What is the difference between a __weak and a __block reference?
    akatakun
    akatakun 2018/05/09
    __blockと__weakの違い,
  • オートリリースプールの使い方と基本 : Objective-C プログラミング

    Objective-C では、オートリリースプールという生成した Objective-C クラスインスタンスの自動解放を行う仕組みが用意されています。 ARC (Automatic Reference Counting) の登場で Objective-C クラスインスタンスの管理も原則自動化されましたけど、内部ではこれまで通り retain や autorelease 等を駆使してメモリ管理が行われています。 そんな ARC が搭載されて久しいですけど、久しぶりにオートリリースプールに注目する機会があったので詳細を詰めてみたところ、知らないことがいくつか出てきてしまいました。 そんな訳で、今回はオートリリースプールの基も含めて、整理してみたいと思います。

    akatakun
    akatakun 2018/05/09
    ARCでは名前が"alloc", "new", "init", "copy", "mutableCopy"で始まるのメソッド戻り値は自動的にretainされ、それ以外は自動的にautoreleaseされる
  • Objective-C ARCによるメモリ管理 | YOHEI's BLOG

    Objective-Cを勉強していて一番驚いたのがメモリ管理の仕組みです。ちょっと前までは、手動メモリ管理(MRC: Manual Reference Counting)、その後、GCがMac OS Xのみに入ったけど、最近になって新たにARC(Automatic Reference Counting)が導入されたとのこと。これからはARCが主流となるとのことで、少し調べてみました。 Appleの出している資料は、おそらくこのTransitioning to ARC Release Notesのみだと思われます。でも、どのような仕組みでARCが動作しているかの情報もなく、少しわかりにくい。 おそらく一番詳しいのはClangのAutomatic Reference Countingだと思います。これを読むと、内部でどのような動作をしているのかはわかります。ただ、じゃあ実際のコーディングはどう

  • Objective-CのBlocksの循環参照とその解決策

    半年までは、Objective-Cでコールバックの処理は、delegateを使って実装していました。しかし、delegateによるコールバックは処理の繋がりが分かりにくいというデメリットがあります。 これは皆さん感じるところだと思いますが、実際に最近のObjective-C開発は、Blocksを使って記述するのがトレンドだと思います。 ただ、メモリ管理に関して少し注意しなければならない点があるので、検証結果も合わせて記していきたいと思います。(少し長くなるので2回にわけて書きたいと思います。) Blocksで処理を行う これは簡単なサンプルです。BlocksRunnerクラスは、Blocksで渡された処理を保持し、runメソッドが呼ばれた時にその処理を実行します。 int main(int argc, const char * argv[]) { @autoreleasepool { Bl

    Objective-CのBlocksの循環参照とその解決策
    akatakun
    akatakun 2018/05/08
    Blocks内部で用いる変数が「解放されていないことを保証することができない」という問題があります
  • OSのデバッグ:メモリアロケーション講座 | POSTD

    追記:やあやあHacker Newsさん!おひさしぶり!メモリ管理を深く掘り下げた私の投稿を読む邪魔はしたくないし、私の投稿のあら探しをする人たちを邪魔するつもりもありません。技術的なマル秘テクニックに注目するのもいいでしょう(いや、わかりますよ。楽しいですしね!)。でも、私たちはひとりぼっちでソフトウェアを書いているわけではないのです。だから、ためになる技術的なコンテンツ(私の記事もそうでありたいものです)を捜すだけじゃなくて、政治的な話題にも目を向けることを強くおすすめします。ソフトウェア開発者である私たちは、今後数十年にわたって社会を変える最前線に立つ特権を与えられています。私たちは、自分たちの仕事を社会全体に役立てられるようにするための情報や知識を必要としています。 そういう意味でみなさんには、 Hacker Newsが「政治的」なコンテンツを検閲すると言い出したこと に反対しても

    OSのデバッグ:メモリアロケーション講座 | POSTD
    akatakun
    akatakun 2017/01/20
    malloc: a * 1の非初期化領域のポインタを返す,calloc: a * nの非初期化領域を0初期化してポインタを返す => 本来配列を確保する目的を持つため,一般的なOSはcallocで仮想メモリを使うため0クリアに時間がかからない
  • いまさら聞けないLinuxとメモリの基礎&vmstatの詳しい使い方 - Qiita

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

    いまさら聞けないLinuxとメモリの基礎&vmstatの詳しい使い方 - Qiita
  • Objctive-Cにおけるプロパティ属性まとめ。正直、weakとかって使いどころが分かりづらいですよねー - Nao Minami's Blog

    どうもこんばんは、south37です。今日はObjective-Cネタです。 プロパティ属性って何よ!? さて、皆さん、そもそも プロパティ属性 って分かりますか?Objective-Cでコーディングしてる人ならstongやweakやcopyなどを目にしていると思いますが、それがいわゆる プロパティ属性 です。 [参考: Objective-Cにおけるプロパティの定義] http://www.objectivec-iphone.com/introduction/property/property.html ざっくりと言えば、 @interface SomeClass : NSObject @property (nonatomic, copy) NSString *name; @end という風にクラスのプロパティを宣言する時に、プロパティの性質を宣言する為に指定するものですね。 プロパティ

    Objctive-Cにおけるプロパティ属性まとめ。正直、weakとかって使いどころが分かりづらいですよねー - Nao Minami's Blog
    akatakun
    akatakun 2015/08/17
    strong: オーナーシップを宣言し、参照カウントをインクリメントし、自身またはその親オブジェクトが開放されたときにデクリメント
  • 1
Лучший частный хостинг