タグ

cacheとmemoryに関するmasterqのブックマーク (11)

  • Linux で DMA Bufferを mmap した時に CPU Cacheが無効になる場合がある (はじめに) - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに Linux では DMA Bufferを mmap した時に、ある条件が揃うと CPU Cache が無効になり、パフォーマンスが極端に落ちる場合があります。そこで、何故そのようなことが起こるのか説明します。少し長くなるので、次のように記事を幾つかに分けて投稿します。 はじめに(この記事) Cache Coherence 問題 Cache Aliasing 問題 Linux Kernel の Cache 問題の扱い Linux では Cache Coherence Hardware を持っていないとDMA Buffer をmm

    Linux で DMA Bufferを mmap した時に CPU Cacheが無効になる場合がある (はじめに) - Qiita
  • スパコンポエムAdC2020 Day4 スパコンの使いやすさとは - Qiita

    どうも、ロボ太(kaityo256)です。趣味は他人のAdCを乗っ取ることです(乗っ取るとは言ってない)。これまでもスパコンポエムをいくつか書いてきましたが、せっかくスパコンポエムAdCがあるので一日お邪魔させてもらいます。 スパコンランキング スパコンにはTop500という有名なランキングがあります。HPLという、バカでかい連立一次方程式を解いて、その性能を競うものです。その名の通り、世界で上位500位までがランキングに入ります。6月と11月の年に二回開催され、ISCやSCという会議で発表されます。ずいぶん昔、「二位じゃダメなんでしょうか?」で有名になった事業仕分けにおいて、スパコンにおける一位とか二位というのは、狭義にはこのランキングでの順位を指しています。HPLがスパコンの性能評価として妥当かどうかについて、以前ポエムを書いたのでそっちを参照してください。 さて、このランキングの良い

    スパコンポエムAdC2020 Day4 スパコンの使いやすさとは - Qiita
    masterq
    masterq 2020/12/12
    "とにかく言いたかったことは「開かれたスパコンこそ使いやすい」ということ"
  • ねむいさんのぶろぐ | STM32H7を使ってみる3 -キャッシュ・ワンダリング(前篇)-

    !告! ぶろぐのhttps化によってSyntax Highlighterが機能しなくなってしまいましたので 現在正常に閲覧できるよう過去の記事を適宜修正中です!! ←前回                       次回→ 今から4年以上前、STM32F7ではぢめてキャッシュという概念に対峙し、分かった つもりでお茶を濁してきましたがH7になった今どうしても正面から向き合わざるを 得ない事態になってしまいました…それも最悪な形で!! ●Cortex-M7のキャッシュにエラッタ発覚! オイオイオイ死ぬわ私。(一般には今年春くらいに知れ渡った内容です) 要約しますとCortex-M7系マイコンでキャッシュポリシーをライトスル―にした状態で Double-WORD(ARMの場合8バイト)の読み書きを同一のアドレスで行った時に、読み 出しの時にデータが壊れる事があるという内容…しかも現行の全リビジ

    ねむいさんのぶろぐ | STM32H7を使ってみる3 -キャッシュ・ワンダリング(前篇)-
    masterq
    masterq 2019/09/26
    "STM32F7/H7でキャッシュを使用する際はキャッシュの取り扱いが面倒なライトバック以外にキャッシュポリシーがとれない"
  • Using linux-fincore to Check Linux Page Cache Usage

    All of Percona’s open source software products, in one place, to download as much or as little as you need.

    Using linux-fincore to Check Linux Page Cache Usage
  • read(2) vs mmap(2) の迷信

    この記事は、シェルスクリプトの記事よりも前に読んだような気がする。同じくらい古い記事だけれど、ちょっと書いてみる。記事への反論はいくつか検索すると見つかって、たぶんみんな知っていることなのだと思うけれど、まとまって書かれている文章はないみたい。 tl;dr read(2) と mmap(2) の性能差に絶対的な回答はない。どちらか一方が常に高速だと主張している文章は、根拠が証拠とともに明確に書かれていない限り信用しないほうが良い。 メモリコピーのコストが高かった時代と、L1キャッシュが巨大になってメモリコピーのコストが低くなった時代と、SMPが一般的になってメモリのマッピング処理のコストが高くなった時代とで、この性能差は頻繁に入れ替わっている。少なくともスループットとレイテンシを分けないで分析できるものではない。 まず当該記事には技術的な間違いがいくつかある。 「mmap()はユーザランド

  • Latency Numbers Every Programmer Should Know

    latency.txt @? ת� `E ת� Latency Comparison Numbers (~2012) ---------------------------------- L1 cache reference 0.5 ns Branch mispredict 5 ns L2 cache reference 7 ns 14x L1 cache Mutex lock/unlock 25 ns Main memory reference 100 ns 20x L2 cache, 200x L1 cache Compress 1K bytes with Zippy 3,000 ns 3 us Send 1K bytes over 1 Gbps network 10,000 ns 10 us Read 4K randomly from SSD* 150,000 ns 150 us ~

    Latency Numbers Every Programmer Should Know
  • STM32H7でキャッシュ一貫性を保持したDMA転送(Memory-to-Peripheral)

    STM32H7におけるキャッシュ一貫性を保ったDMA転送の方法として、MPUによる設定を解説します。 STM32H7ではF7と異なり、DMAコントローラからDTCM領域にアクセスできないため注意が必要です。 GitHubでソースコードを公開しています。(Memory-to-Peripheralの場合のみ 概要 Cortex-M7コアにはL1キャッシュが搭載されているため、DMA転送時にはデータ化け(キャッシュの一貫性が崩れる問題)に気を配る必要があります。 STM32F7では、DMA対象データをキャッシュの影響を受けない「DTCM領域」に置くことが、データ化け対策として有効でした[脚注1]。一方でSTM32H7では、STM32F7からアーキテクチャが変更され、DMAコントローラからDTCM領域(0x2000 0000~)にアクセスできなくなりました[脚注2]。無理にアクセスするとHardF

    STM32H7でキャッシュ一貫性を保持したDMA転送(Memory-to-Peripheral)
    masterq
    masterq 2018/02/01
    "STM32H7では、DMA対象データをDTCM以外に置く必要があり、別のデータ化け対策も必須となります"
  • Linuxのdrop_cachesにwriteした時の動きを追う - Qiita

    はじめに drop_cachesにwriteしてみて、その前後での**/proc/meminfoやfree(1)**コマンド結果を観察するような記事はたくさんあるけど、drop_cachesにwriteしたときに何をやっているのかを詳しく解説したような記事が全然見つからなかったので、自分で調べてみることにした。 ・・・という間違いを犯して泥沼にハマり貴重な休みを潰してしまったとあるエンジニアの活動を記録した記事である(たぶん) なお、Linux-4.12くらい、procps-ng-3.3.12くらいを見ています。 ページキャッシュの概要 概要 そもそも通常は、あえてdrop_cachesに値を書いて操作する必要が出るような場面はないと思われる。敷いていえば、ページキャッシュに乗ってる場合と乗っていない場合とでのベンチマークをしたいときくらい? まれに**/proc/meminfoのMemF

    Linuxのdrop_cachesにwriteした時の動きを追う - Qiita
  • いまさら聞けないLinuxとメモリの基礎&vmstatの詳しい使い方 - Qiita

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

    いまさら聞けないLinuxとメモリの基礎&vmstatの詳しい使い方 - Qiita
  • Linuxのバッファキャッシュとページキャッシュの違いは? | b.l0g.jp

    Linuxのバッファキャッシュとページキャッシュの違いは? 2012-10-25 Linuxが管理するキャッシュ領域には、バッファキャッシュとページキャッシュ領域があって、topコマンドや/proc/meminfoの「bufferes」「cached」という項目を見れば、現在のそれぞれのキャッシュ領域がどの程度なのかを確認することができる。 どちらも、ディスクの読み書きをキャッシュしてデータへのアクセスを高速化するという点では同じだが、それぞれがどのような意味で、どういう違いがあるのかについて、Quoraに分かりやすい解説があったので、翻訳してみた。 ページキャッシュは、ファイルI/Oを最適化するために、ファイルのページをキャッシュする。バッファキャッシュは、ブロックI/Oを最適化するために、ディスクブロックをキャッシュする。 Linuxカーネル2.4よりも前では、2つのキャッシュは明白に

  • MESIプロトコル - Wikipedia

    MESIプロトコルの状態遷移図 MESIプロトコルのアクティビティ図 MESIプロトコル(別名、イリノイ・プロトコル)とは、マルチプロセッサシステムでメモリやキャッシュメモリの同期をとるキャッシュコヒーレンシとメモリ一貫性のプロトコルであり、ライトバック方式のキャッシュで広く使われている。イリノイ・プロトコルという別名はイリノイ大学アーバナ・シャンペーン校で開発されたことに由来する。 インテルは、「486プロセッサで以前から使われていたライトスルーキャッシュに加えて、より効率的なライトバックキャッシュをサポートする」[1]としてPentiumプロセッサでMESIプロトコルを採用した。そのためパーソナルコンピュータでも広く使われている。 各キャッシュラインは以下の4状態のいずれかにある。状態はキャッシュラインのタグに含まれる(2bitで表される)。 M - Modified(変更): 当該キ

    MESIプロトコル - Wikipedia
    masterq
    masterq 2012/03/26
    キャッシュの状態を4つに分けて制御する
  • 1