タグ

メモリに関するindicationのブックマーク (37)

  • 【C#】構造体(struct)を完全に理解する - Annulus Games

    今回の記事はC#における構造体(struct)について。 複合的なデータを扱う際、多くの場面ではクラス(class)が用いられるかと思います。しかし、パフォーマンスが重要な場面や、GCによる影響が大きいUnityなどでは、状況に応じてクラスではなく構造体を使用した方が良いこともあります。 近年はC#においてもパフォーマンスが重視されるようになり、構造体が用いられる機会も多くなっています。またUnityのDOTSにおいても、C# Job SystemやBurst Compilerに最適化されたコードを書くために構造体を多用することになります。 ここでは構造体に関する基礎的な知識から、クラスと構造体のメモリ管理について、そして実際に構造体を用いる際の注意や活用方法についても解説していきたいと思います。 ただ今回の記事、調子に乗って色々な内容を詰め込んだ結果、めちゃくちゃに長くなってます。そのた

    indication
    indication 2023/08/12
    readonly structなんてあったのか。知らなかった
  • ブラウザ1,000タブも8K動画も余裕、256GBのDDR4メモリをPCに搭載してみた 使い切るのは無理?今組める最高の環境を体験 坂本はじめ

    ブラウザ1,000タブも8K動画も余裕、256GBのDDR4メモリをPCに搭載してみた 使い切るのは無理?今組める最高の環境を体験 坂本はじめ
    indication
    indication 2020/03/11
    RAMディスクの夢が広がる響きあう
  • 大規模システムでの Linux のメモリ管理

    (This post is also available in English.) この記事は Linux memory management at scale を 著者の Chris Down さんの許可 を得て Hiroaki Nakamura が日語に翻訳したものです。 原文のライセンス は CC BY-SA 4.0 であり、翻訳のライセンスも同じく CC BY 4.0 とします。 cgroup2 プロジェクトでの私の仕事の一部として Linux システムのリソース管理についてエンジニアと話すことに多くの時間をかけてきました。 これらの会話を通じてどんどん明らかになってきた 1 つの事実は多くのエンジニアは、シニア SRE たちでさえも、 Linux のメモリ管理についていくつかのよくある誤解を持っていて、そしてそれが彼らがサポートするサービスやシステムが来確実に稼働したり効率的

    大規模システムでの Linux のメモリ管理
    indication
    indication 2020/02/16
    メモリ管理とファイルシステムと文字コードには手を出すなってじっちゃんが言ってた。中身は知っておきたい。特にリソース分離の話だし。
  • 過去の難案件 PS2のカーネル開発 - Qiita

    はじめに 時はPlayStation2も そろそろ終わり。 PS2互換機がゲームセンター等で使われていた時代の事です 私は当時 超新人だったんだけどね ただ私は 大学を3ヶ月で光速中退して すぐにフリーランスになった変な経歴持ちです そんな時 ある人物が 掲示板に メモリマネージャやDMA、3DCGについて質問をしていた ちょうどその時期 仕事が楽だったので 光速で回答しました。 メモリマネージャ作りたいっていうので、簡単な方法として、連結リストでAllocateしていくと簡単だよ DMAについては 方向のふらぐがこーであーするだけだよ 3DCGについては DirectXを知識は入れてたので なんとなく回答 すると やり取りから1週間で 仕事してもらえますか? PS2の自社タイトルを作ってます。コアエンジニアが不足しています とメールアドレス宛にメッセージがきたので 請ける事に これがすべ

    過去の難案件 PS2のカーネル開発 - Qiita
    indication
    indication 2020/01/01
    PowerPCってだけで変態なのに、拡張命令が輪をかけてすごい。アセンブラ命令で頂点変換…メモリアロケータとかサラリと凄いことを書いてる。
  • AviUtlはいかにして4GBのメモリの壁を超えたのか - Qiita

    Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationWhat you can do with signing up

    AviUtlはいかにして4GBのメモリの壁を超えたのか - Qiita
    indication
    indication 2019/11/19
    64bit PCにおける32bitアプリのメモリ拡張術。SQL Serverかと思った(32bitOS範囲外のメモリを確保する謎技術)
  • Linux メモリ管理を理解したい - Qiita

    Linux カーネルのメモリ管理方法について、勉強したことをまとめる。 メモリ管理はハードウェアに強く依存するため、x86_64 かつ OS起動後に 64bitプロテクトモード に移行したあとに話を絞る。また、OS は CentOS7.6、カーネルは次のバージョンを利用する。 ]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) ]# uname -a Linux localhost.localdomain 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux 概要 ノイマン型アーキテクチャ コンピュータの基的な構成のひとつ。次の図が参考になる。 ほぼ全てのコンピュータが、このアーキ

    Linux メモリ管理を理解したい - Qiita
  • メモリ容量を最大8倍に拡張してくれるNVMe SSD。Western Digital「Ultrastar Memory Extension Drive」発表

    メモリ容量を最大8倍に拡張してくれるNVMe SSD。Western Digital「Ultrastar Memory Extension Drive」発表 LinuxWindowsなどのモダンなOSには一般に「仮想記憶」と呼ばれる機能が備わっています。仮想記憶には、物理メモリに保持されている内容を一時的にストレージへ待避させ、そこへ別の内容を書き込める仕組みがあります。この仕組みにより、OSは物理メモリの容量を超えてメモリを割り当てることができるようになります。 Western Digitalは11月12日、この仮想記憶のような仕組みを用いてメモリ容量を最大8倍にまで拡大できる「Ultrastar DC ME200 Memory Extension Drive」(以下、Memory Drive)を発表しました。 Memory Driveの物理的な構成は、NVMeインターフェイスを備えた

    メモリ容量を最大8倍に拡張してくれるNVMe SSD。Western Digital「Ultrastar Memory Extension Drive」発表
    indication
    indication 2018/11/14
    linuxって、ドライバーでメモリ管理を書き換えることなんて出来たっけ…?
  • 低レイヤを知りたい人のための Cコンパイラ作成入門

    はじめに このオンラインブックは執筆中です。完成版ではありません。フィードバックフォーム このには一冊のに盛り込むにはやや欲張りな内容を詰め込みました。書では、C言語で書かれたソースコードをアセンブリ言語に変換するプログラム、つまりCコンパイラを作成します。コンパイラそのものもCを使って開発します。当面の目標はセルフホスト、すなわち自作コンパイラでそれ自身のソースコードをコンパイルできるようにすることです。 このでは、コンパイラの説明の難易度が急に上がりすぎないように、様々なトピックを書全体を通じて次第に掘り下げていくという形で説明することにしました。その理由は次のとおりです。 コンパイラは、構文解析、中間パス、コード生成といった複数のステージに概念的に分割することができます。よくある教科書的アプローチでは、それぞれのトピックについて章を立てて解説を行うことになりますが、そのよう

    indication
    indication 2018/11/02
    素晴らしい資料
  • GoogleのエキスパートがChromeのフリーズを直すまでの奮闘記

    「24コアもあるCPUを積んでいるハイエンドPCであるにもかかわらずGmailを使っている際にChromeがフリーズしてしまった」という現象に遭遇したブルース・ドーソンさんが、その原因を発見するまでの取り組みをブログに書き残しています。なお、ドーソンさんはGoogleChromeを開発しているエキスパート開発者です。 24-core CPU and I can’t type an email (part one) | Random ASCII https://randomascii.wordpress.com/2018/08/16/24-core-cpu-and-i-cant-type-an-email-part-one/ ある日の朝、ドーソンさんは極めて日常的な「メールを書く」という作業をGmailで行っていたところ、入力した文字が遅れて表示されるなどの怪しい挙動を見せた後、突然Gma

    GoogleのエキスパートがChromeのフリーズを直すまでの奮闘記
    indication
    indication 2018/08/26
    2Tiのメモリ、24スレッド(白目) 仮想メモリをマップするのがそもそも大変なのに、色々凄すぎる
  • メモリのビット反転エラーとセキュリティの話|Rui Ueyama

    ハードウェアのエラーでメモリの内容が化けてしまうことが稀にある。大抵のDRAMエラーはせいぜいプログラムがクラッシュする結果になるだけだが、データ破壊になることもありえるし、悪意のある使い方をすればセキュリティ破りに使うこともできてしまう。ここではメモリエラーとセキュリティの話をしようと思う。 メモリのエラー率は意外なほど高い。データセンターで大規模なマシン群を対象に実際に観測したところ、1年間に1回以上のエラーが発生したDIMMモジュールは全体の8%にのぼったそうだ。DIMM 1枚に数百億個のメモリセルが実装されているといっても、このエラー率はちょっとびっくりするくらい大きな数字ではないだろうか? サーバでは普通はエラー訂正付きのDIMMを使うので1ビットのエラーは問題にならないが、エラー訂正のないコンシューマ機器ではこれは実際的な問題になりえる。 メモリエラーを利用したセキュリティ破り

    メモリのビット反転エラーとセキュリティの話|Rui Ueyama
    indication
    indication 2017/11/21
    大量にメモリへアクセスするdbとか、どうやって防いでるんだろ。
  • OSのデバッグ:メモリアロケーション講座 | POSTD

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

    OSのデバッグ:メモリアロケーション講座 | POSTD
  • OutOfMemoryError の調べ方 - Qiita

    OutOfMemoryError (以下 OOME)が起こったときにお手上げ状態にならないためにも、 Java のメモリ管理の仕組みとか、 OOME が起こったときの調査方法とかを調べる。 環境 OS Windows 7 > java -version java version "1.8.0_74" Java(TM) SE Runtime Environment (build 1.8.0_74-b02) Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode) Java 8 で、 Oracle の JVM を前提とした話です。 Java のメモリ管理 これを知っておかないと、 OOME が起こっても、メモリ内で何が起こっていて、どこを調査すべきで、どのように対処したらいいのかが判断できない。 なので、まずは、そもそも J

    OutOfMemoryError の調べ方 - Qiita
  • OOM Killerにであったら何をするべきか?

    OOM killerで大事なプロセスが殺される。困りますね。。 google で OOM Killerと入力すると 「無効」とか補完されます。しかしどうするのが良いのか、あまりよく説明されている記事がみあたらなかったので自分の考えをメモしておきます。 OOM Killer の目的は何か? まずは何故OOM Killerが発生しているのかについて、ざっくりイメージをつかみましょう。linux kernelはプロセスからの「メモリくれ」という要求に対してたぶん足りそうだという場合に「OK」といって渡します。実際のメモリ割り当てはアクセスが発生するタイミングまで遅延させます。これを遅延アロケーションといい、だいたいにおいてうまく動きます。ただし必ずうまくいくと保証されているわけではないので破綻することがあります。 OOM Killerはこの遅延アロケーションが破綻しそうなときに、適当にプロセスを

    indication
    indication 2016/02/15
    systemdが単なるinitの書き直しだと思ってたが、こんなに良いことがあるなんて、知らなかった
  • メモリを使用する、とは

    この投稿は「Windows & Microsoft技術 基礎 Advent Calendar 2015」の16日目の記事です。 稿では、Windows(広く一般のOSでも、基礎的な知識としては適合する)の、「メモリ使用量」の取り扱いについてまとめたものです。特に、コードからメモリを使用するとはどういうことなのかがちょっとでも明らかになれば良いかなと思っています。 普通の人、普通のプログラム、普通のプロセス .NET環境であったり、C++で各ネイティブなコードであったり、通常プログラムを書くと「ユーザープロセス空間」で動くコードがビルドされます。C#でコードを書けば、newしたりすることで、「どこかにあるメモリ」を適量確保し、それを使用可能にしてくれます。 このメモリ使用量はどのように決まってくるのか? 例えば以下のコード: var data = new byte[10 * 1000 *

    メモリを使用する、とは
    indication
    indication 2015/12/16
    さらにキャッシュとかもあるから、正確な見積もりは困難を極める…
  • 【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の関係を図解し利用率の計算方法を説明してみる - のぴぴのメモ
  • Linux のページテーブルのサイズの見方と見積式 - ablog

    Linux Kernel 2.6 (x86-64) でのページテーブルのサイズの確認方法と見積式を調べてみた。 あっているか自信のないところもある&まだ書きかけ。 ページテーブルのサイズの見方 OS全体のページテーブルのサイズ $ cat /proc/meminfo MemTotal: 16158544 kB MemFree: 13134056 kB (中略) PageTables: 34428 kB ★ 34MB プロセス毎のページテーブルのサイズ $ cat /proc/10225/status # 10255 は PID Name: zsh State: S (sleeping) Tgid: 10225 Pid: 10225 PPid: 10222 (中略) VmPTE: 124 kB ★ 124KB ページテーブルのサイズの見積式 見積式 (プロセスが使用している物理メモリサイズ

    Linux のページテーブルのサイズの見方と見積式 - ablog
  • 負荷低すぎはもはや障害じゃないのか - mikedaの日記

    前のブログの続きで、もにかじ7で話した小ネタその2。 実際にサービスでなんかやったというのじゃなく、こういうこと考えてるんだけどみんなどうしてます?って話です。 まずオンプレ時代はサーバのスペックダウンはけっこう大変だったし、頑張ってメモリやCPU引っこ抜いてもそんなに節約にならなかった。 ※CPUやメモリはサーバ価格の一部でしかないし、ラック費用(消費電力)もあるし。 でもクラウド前提だとスペックダウンはとても簡単で、スペック半分にすると価格も半分になる。 そうすると、 『イベントで一時的にc4.4xlarge(8万/月)にして、そのまま最大CPU使用率10%とかで数ヶ月放置されている』 みたいなのはビジネス的な損失という意味で明らかに障害で、監視すべきじゃないだろうか? みんななんかやってますか? というようなことを参加者に聞いてみました。 参加者の中では、AutoScalingしてい

    負荷低すぎはもはや障害じゃないのか - mikedaの日記
    indication
    indication 2015/02/02
    その発送はなかった
  • memcpy と memmove - a.out

    事の始まり 研究でプログラムを書いていたときの話。 ローカル(Mac OS)では問題なく動作していたプログラムが、サーバ(Linux)に移した途端なぜか Segmentation Fault でクラッシュするということがあった。 セグフォは許可されていないメモリ領域にアクセスした時に起こるエラーで、経験上 配列へのアクセスでミスをしているパターンが多い。 どうせ今回もそのパターンだろうと思ったけど、何度確認してもおかしいところは見つからない。 特にそのプログラムではきちんとテストを書いていたので、配列へのアクセスミス程度であればすぐに気づくはずだった。 埒が明かなかったので、今度は標準ライブラリの関数の使い方にミスがないかをチェックしていくことにした。 (そのプログラムでは memcpy を多用していたので、もしかすると memcpy の第1引数と第2引数の順番を間違えたのかも…と思っての

    memcpy と memmove - a.out
    indication
    indication 2015/01/14
    うーん、将来的にはまりそう。
  • 視覚化による5つのガベージコレクションアルゴリズム入門 | POSTD

    ほとんどの開発者は、自動のガベージコレクション(GC)を当たり前のように使っています。これは、私たちの仕事を容易にするために言語ランタイムが提供する素晴らしい機能の1つです。 しかし、最新のガベージコレクタの中をのぞいてみれば、実際の仕組みは非常に理解しづらいことが分かります。実装の詳細が無数にあるため、それが何をしようとしているのか、また、それがとんでもなく間違った事態を引き起こしかねないことについて十分理解していない限り、すっかり混乱してしまうでしょう。 そこで、5種類のガベージコレクションアルゴリズムを持つおもちゃを作ってみました。小さいアニメーションはランタイムの動作から作成しました。もっと大きいアニメーションとそれを作成するコードは github.com/kenfox/gc-viz で見ることができます。単純なアニメーションによってこうした重要なアルゴリズムを明らかにできることは

    視覚化による5つのガベージコレクションアルゴリズム入門 | POSTD
  • 読み取り権限がなく実行権限だけのファイルが実行できるのはなぜ? - カーネルのソースを読む - - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    きっかけはこのツイート。 基礎的なことなんだろうけど理解できてないこと。 読み取り権限のない実行権限だけのファイルってどういう扱いになるんだろう。— ゑぬぽい改@電探が出(ん)たん? (@NPoi) March 27, 2014 実際にやってみるとわかるけど、実行権限だけついてるファイルは実行可能です。でも、「読み込めないのに実行できる」というのは直感に反するような気もしますね。だって、実行するためにはプログラムをメモリに読み込む必要がありますから!ではなぜ実行権限だけのファイルが実行できるのか、その仕組みを解説します。 実行とはなにか、どういう仕組みなのか Linux において実行とは「forkしてexecする」です(そのへんの詳しい話は プロセスさん を読もう!)。 fork も exec もシステムコール(正確には execve がシステムコールで exec はそのフロントエンドだけ

    読み取り権限がなく実行権限だけのファイルが実行できるのはなぜ? - カーネルのソースを読む - - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    indication
    indication 2014/03/28
    基本的にシステムコールか。結構意識してないので、勉強になる。