「cache」を含む日記 RSS

はてなキーワード: cacheとは

2025-06-19

2Q-Cacheとは何ぞやと思ったら、日本語がない。

やり方は英語のみ…。

ざっと読んだ限りだと、LRU+FIFOみたいな感じで、総データーの1%ぐらいキャッシュとして確保できれば、LRUよりも早く、シーケンシャルスキャンだとLRUよりももっと早いと書いてある。

https://www.vldb.org/conf/1994/P439.PDF

2025-06-17

早寝する技術 ―持続可能パフォーマンスを実現するスリープマネ

TL;DR

日中生産性は、夜の過ごし方、特に「就寝」というクリティカルタスクいか成功させるかにかかっている。本記事では、つい夜更かししてしまエンジニアのために、早寝を「技術」として体系化し、再現性のある形で実践するための具体的な手法を探求する。これは精神論ではない。あなたQoL生産性を向上させるための、実践的なスリープエンジニアリングだ。

はじめに:なぜ我々はwhile(true)な夜を過ごすのか

我々エンジニアにとって、夜は不思議な魅力を持つ時間だ。日中喧騒から解放され、思考は冴えわたりゾーンに入りやすい。しかし、その魅力的な時間は、往々にして「早寝」という、人間生存に不可欠な基本プロセス犠牲にすることで成り立っている。

「あとちょっとだけ、このバグの原因を調査したい」

リファクタリングが楽しくなってきた」

面白い技術記事を見つけてしまった」

これらの探求心はエンジニア美徳であるが、同時に我々を「睡眠負債」という深刻な技術負債へと導く。本稿は、この負債を返済し、持続可能な開発(と生活)を実現するための「早寝」という技術に焦点を当てる。

アンチパターン:早寝を妨げるBlockerたち

早寝を実装する前に、まずは現状のアーキテクチャに潜むアンチパターン特定しよう。

就寝前のスマートフォンは、まさに同期的なブロッキングI/Oだ。SNS無限スクロール動画プラットフォーム自動再生チャットアプリの通知。これらは我々の意識というシングルスレッドを完全に占有し、本来実行されるべきsleep()プロセスへの遷移を妨げる。

深夜まで続くコーディング問題解決は、脳を極度の興奮状態にする。ベッドに入っても、アドレナリンコルチゾールといったホルモンCacheに残り続け、CPUクールダウンしない。shutdown -h nowを叩いても、プロセスが終了しないのだ。

「夜更かしの供」として注入されるカフェインアルコールは、一見するとパフォーマンスを向上させるように見える。しかし、これらは睡眠の質という重要なmetricsを著しく劣化させる、誤った依存関係だ。特にアルコールは、入眠を助けるように見えて、実はレム睡眠を阻害し、睡眠アーキテクチャ全体を不安定にする。

  • Cronの不備:

規則な就寝・起床時間は、体内時計という最も重要なCronジョブ破壊する。毎日異なる時間に実行されるジョブが安定した結果をもたらさないのと同様に、不規則睡眠スケジュールは、日中パフォーマンス予測不可能ものにする。

Sleep as Code: 早寝を実現するためのプラクティス

では、どうすればこれらのアンチパターン排除し、安定した早寝pipelineを構築できるのか。ここではSleep as Codeの概念に基づき、具体的なプラクティスを紹介する。

1. 環境IaC (Infrastructure as Code)

睡眠環境コード化し、常に理想的状態を維持する。

2. 就寝CI/CDパイプラインの構築

毎晩、同じ手順で就寝プロセスを実行することで、入眠を自動化する。

- PC/スマホシャットダウン: 最も重要ステップ物理的に電源を落とすか、手の届かない場所(別のコンテナ)にdeployする。

- 入浴: 38〜40℃のぬるめのお湯に15分ほど浸かる。これにより深部体温が一時的に上昇し、その後の下降とともに入眠が促される。これはHot-swapならぬHot-bathによるクールダウンだ。

静的コンテンツの消費: 激しい思考を伴わない、静的な情報(紙の読書など)に切り替える。電子書籍ではなく、紙媒体が望ましい。

ストレッチ: 軽いストレッチで、日中のcommitで固まった体をreleaseする。

  • Deploy (就寝):

すべての準備が整ったら、ベッドという本番環境デプロイする。余計な思考git clean -fd強制削除し、呼吸に集中する。

3. MonitoringとRefactoring

例:「夕食後のコーヒーが原因だった」→「カフェイン摂取は15時までというSLAを設ける」

まとめ:早寝は未来自分への投資である

早寝は、単に体を休める行為ではない。日中の高いパフォーマンス、明晰な思考、そして創造性を維持するための、最も効果的で再現性の高い「技術」だ。

我々はインフラコード管理し、CI/CDデプロイ自動化するように、自身睡眠もまた、技術と工夫によってコントロールできる。今夜、あなたのwhile(true)なループbreakし、持続可能パフォーマンスを手に入れるための第一歩を踏み出してほしい。

Happy sleeping!

早寝する技術 ―持続可能パフォーマンスを実現するスリープマネ

TL;DR

日中生産性は、夜の過ごし方、特に「就寝」というクリティカルタスクいか成功させるかにかかっている。本記事では、つい夜更かししてしまエンジニアのために、早寝を「技術」として体系化し、再現性のある形で実践するための具体的な手法を探求する。これは精神論ではない。あなたQoL生産性を向上させるための、実践的なスリープエンジニアリングだ。

はじめに:なぜ我々はwhile(true)な夜を過ごすのか

我々エンジニアにとって、夜は不思議な魅力を持つ時間だ。日中喧騒から解放され、思考は冴えわたりゾーンに入りやすい。しかし、その魅力的な時間は、往々にして「早寝」という、人間生存に不可欠な基本プロセス犠牲にすることで成り立っている。

「あとちょっとだけ、このバグの原因を調査したい」

リファクタリングが楽しくなってきた」

面白い技術記事を見つけてしまった」

これらの探求心はエンジニア美徳であるが、同時に我々を「睡眠負債」という深刻な技術負債へと導く。本稿は、この負債を返済し、持続可能な開発(と生活)を実現するための「早寝」という技術に焦点を当てる。

アンチパターン:早寝を妨げるBlockerたち

早寝を実装する前に、まずは現状のアーキテクチャに潜むアンチパターン特定しよう。

就寝前のスマートフォンは、まさに同期的なブロッキングI/Oだ。SNS無限スクロール動画プラットフォーム自動再生チャットアプリの通知。これらは我々の意識というシングルスレッドを完全に占有し、本来実行されるべきsleep()プロセスへの遷移を妨げる。

Cacheされた覚醒状態:

深夜まで続くコーディング問題解決は、脳を極度の興奮状態にする。ベッドに入っても、アドレナリンコルチゾールといったホルモンCacheに残り続け、CPUクールダウンしない。shutdown -h nowを叩いても、プロセスが終了しないのだ。

「夜更かしの供」として注入されるカフェインアルコールは、一見するとパフォーマンスを向上させるように見える。しかし、これらは睡眠の質という重要なmetricsを著しく劣化させる、誤った依存関係だ。特にアルコールは、入眠を助けるように見えて、実はレム睡眠を阻害し、睡眠アーキテクチャ全体を不安定にする。

  • Cronの不備:

規則な就寝・起床時間は、体内時計という最も重要なCronジョブ破壊する。毎日異なる時間に実行されるジョブが安定した結果をもたらさないのと同様に、不規則睡眠スケジュールは、日中パフォーマンス予測不可能ものにする。

Sleep as Code: 早寝を実現するためのプラクティス

では、どうすればこれらのアンチパターン排除し、安定した早寝pipelineを構築できるのか。ここではSleep as Codeの概念に基づき、具体的なプラクティスを紹介する。

1. 環境IaC (Infrastructure as Code)

睡眠環境コード化し、常に理想的状態を維持する。

2. 就寝CI/CDパイプラインの構築

毎晩、同じ手順で就寝プロセスを実行することで、入眠を自動化する。

- PC/スマホシャットダウン: 最も重要ステップ物理的に電源を落とすか、手の届かない場所(別のコンテナ)にdeployする。

- 入浴: 38〜40℃のぬるめのお湯に15分ほど浸かる。これにより深部体温が一時的に上昇し、その後の下降とともに入眠が促される。これはHot-swapならぬHot-bathによるクールダウンだ。

静的コンテンツの消費: 激しい思考を伴わない、静的な情報(紙の読書など)に切り替える。電子書籍ではなく、紙媒体が望ましい。

ストレッチ: 軽いストレッチで、日中のcommitで固まった体をreleaseする。

  • Deploy (就寝):

すべての準備が整ったら、ベッドという本番環境デプロイする。余計な思考git clean -fd強制削除し、呼吸に集中する。

3. MonitoringとRefactoring

例:「夕食後のコーヒーが原因だった」→「カフェイン摂取は15時までというSLAを設ける」

まとめ:早寝は未来自分への投資である

早寝は、単に体を休める行為ではない。日中の高いパフォーマンス、明晰な思考、そして創造性を維持するための、最も効果的で再現性の高い「技術」だ。

我々はインフラコード管理し、CI/CDデプロイ自動化するように、自身睡眠もまた、技術と工夫によってコントロールできる。今夜、あなたのwhile(true)なループbreakし、持続可能パフォーマンスを手に入れるための第一歩を踏み出してほしい。

Happy sleeping!

2025-01-17

[] The Comprehensive Compendium of Programming Wisdom: Navigating the Multidimensional Landscape of Software Craftsmanship

Programming proficiency necessitates a comprehensive understanding of multifaceted concepts, paradigms, and philosophies that underpin the art and science of software development. The Unix philosophy, with its emphasis on modularity, simplicity, and composability, serves as a foundational ethos for elegant code design. This philosophy advocates for creating small, focused programs that excel at singular tasks, facilitating the construction of complex systems through the judicious composition of these atomic units.

Algorithmic Mastery and Data Structure Optimization

Proficient programmers must possess an encyclopedic knowledge of algorithms and data structures, enabling them to architect solutions with optimal time and space complexity. This encompasses a deep understanding of sorting algorithms (e.g., quicksort, mergesort), searching techniques (binary search, depth-first search), and advanced data structures (red-black trees, B-trees, Fibonacci heaps) The ability to analyze algorithmic efficiency using Big O notation is paramount for creating scalable solutions.

Paradigmatic Versatility

Object-Oriented Programming (OOP)

OOP principles—encapsulation, inheritance, and polymorphism—form the bedrock of modern software architecture. Mastery of design patterns (e.g., Singleton, Factory, Observer) and SOLID principles is crucial for creating maintainable and extensible codebases.

Functional Programming (FP)

The FP paradigm, with its emphasis on immutability and pure functions, offers a powerful approach to managing complexity and facilitating parallel execution. Proficiency in higher-order functions, currying, and monads is essential for leveraging FP's full potential.

Advanced Language Features and Metaprogramming

Expertise in language-specific advanced features, such as C++'s template metaprogramming or Python's metaclasses, allows for the creation of highly generic and reusable code. Understanding compiler theory and the ability to write domain-specific languages (DSLs) further expands a programmer's capabilities.

Concurrent and Parallel Programming

In an era of multi-core processors and distributed systems, mastery of concurrent programming models (e.g., actor model, communicating sequential processes) and parallel algorithms is indispensable. This includes proficiency in lock-free data structures, memory models, and synchronization primitives.

Systems Programming and Low-Level Optimization

A deep understanding of computer architecture, operating systems, and memory management enables the creation of highly optimized, low-level code. This encompasses knowledge of cache coherence protocols, CPU pipeline optimization, and assembly language programming.

Security and Cryptography

In an increasingly interconnected world, a thorough grasp of cryptographic principles, secure coding practices, and common attack vectors (e.g., buffer overflows, SQL injection) is crucial for developing robust and secure systems.

Version Control and Collaborative Development

Proficiency in distributed version control systems (e.g., Git) and collaborative development practices (code reviews, continuous integration) is essential for effective team-based software development.

Testing and Quality Assurance

Advanced testing methodologies, including property-based testing, fuzzing, and formal verification techniques, are indispensable for ensuring software reliability and correctness.

 

In conclusion, the pantheon of programming knowledge extends far beyond mere syntax mastery. It encompasses a rich tapestry of theoretical concepts, practical skills, and philosophical approaches that, when harmoniously integrated, enable the creation of elegant, efficient, and robust software systems. The relentless pursuit of this multifaceted expertise is the hallmark of a truly accomplished programmer.

2024-11-07

AMD3D V-Cache、なんであまり性能良くならないのか

技術的に凄そうなのに、あまり性能が良くなってない

接合部分でデータのやり取りをするときボトルネックで打ち消されているのか・・・

2024-11-01

新しいAIハードが出てくるのを期待しつつ、ずっとRTX 3090を使っている

AIが盛り上がって数年経つが、個人が買えるような価格帯で、良いAI向けのハードが出てこない。

RTX 3090のVRAM24GBを大事に使っているが、そもそもVRAMに入らないモデルの方が多い。

複数AIを立ち上げるなんてのは、VRAM容量が溢れるので、そもそも動かせない。

動けばNVIDIAの Nsight Systemsなどで遅い所などを探せるが、そこまでいかない。

複数SSD仮想メモリにするというのも、RTX 3090のNVLink BridgeでVRAMだけ拡張するなんてのも世の中に出てこない。


Appleもそろそろ出してくるかと思っていたが、M4普通の順当進化だった。

M2 Ultraはチップtoチップ接続し2.5TB/sを謳ったが、同じチップを繋げたのでいらない機能が倍になっただけだった。

M4 Ultraで、片側のチップGPU or NPU+帯域の広いGDDR or HBMになればいいが、あまり期待が出来ない。

GPU or NPUのコアが増えたとしても、L2/L3キャッシュの容量が少なすぎる、増やしても距離が遠ければ性能も出ないので、

AppleAMDのように3D V-CacheSRAMを積み、Hybrid Bondingで上下の帯域を確保してくれないだろうか


IBMはTelum IIとSpyreを出してきたがエンタープライズ向けなのでパス

Groq社がLLM用LPU、HyperAccel社がLLM用ASICを出して来たが、

Groqは1枚のPCIeカードでは全くメモリ容量が足りず役に立たなそうで、HyperAccelはサーバー前提でこちらも個人から手が出しにくい。

FPGAHBMが載ったPCIeカード個人向けには販売できるような価格でもなければ、そもそも販売すらされない。

ジムケラー率いるTenstorrentも1枚のPCIeだとメモリが足りないし、Ethernetでなんとかやりくりしようとしているが帯域に引っ張られそうに見える。

NextSilicon社がMaverick-2というIntelligent Compute Accelerator (ICA)というのも出してきたが、HPC向けで個人利用からは遠い。


中国も良いのが出てきていない。

Biren、Fuzhou Rockchip、VeriSilicon、Moore Threads、LinJoWing、Loongson、JingJia Micro、Cambricon、Vastai Technologies、Xiangdixian Computing、Enflame Technology、MetaX、Zhaoxin、Lingjiu Microelectronics、

DengLin Technology、Iluvatar CoreX、Innosilicon、Horizon Robotics、Black Sesame Technologies

色々あって追いきれないが、何か飛び出て良いのが出てきたというのは聞かない(日本いるかからもしれないが)

2024-10-09

anond:20241009183035

サンキューchatgpt

docker build --no-cache使用すると、Dockerキャッシュを一切使用せず、すべてのステップを再実行します。ただし、ベースイメージに関しては少し異なる動作します。

ベースイメージダウンロードについて

ベースイメージキャッシュ:

docker build --no-cache使用しても、ベースイメージ(FROM で指定されたイメージ)は一度ローカルダウンロードされていれば再度ダウンロードしません。

ベースイメージローカル存在しない場合は、インターネットからダウンロードされます

ローカルにすでにある場合は、--no-cache でもそのまま利用されるので、ベースイメージを毎回ダウンロードしているわけではありません。

ベースイメージサイズ

UbuntuベースPythonイメージは通常1GB程度になることが多いですが、軽量なイメージ(例えばbookwormやslimタグ)を使用すると、サイズを大幅に削減することができます

bookworm(Debian 12ベース)は、一般的パッケージが少ないため、通常の ubuntu イメージよりも軽量です。

例えば、python:3.11-slim-bookworm のようなイメージはかなり小さく抑えられており、数百MBに収まることがあります

まとめ

docker build --no-cache でも、ベースイメージローカルにある場合は再ダウンロードされません。

ベースイメージが軽量なもの(例:bookworm)であれば、ビルドが高速になる可能性があります

イメージサイズが大きくないため、毎回のビルドが速いと感じられるのかもしれません。

詳しい人教えてくれ

docker build --no-cachedocker buildしたとき、一切キャッシュを使わないということやろ?

そしたらベースイメージを一からインターネッツからダウンロードしてきてるんか?

ubuntuベースpythonイメージだったら結構サイズになりそうなものだけど(1GBくらい?)

これを毎回ダウンロードしてきてるんか?

それにしてはbuild終わるの早いような。bookwarm使ってるから小さくて済んでるからか?

2024-09-23

2024-07-29

2024-06-20

anond:20240620092804

これだけCacheやらメモリリッチに使う計算一般的になったのに、あのしょっぱいキャッシュメモリ周りはなんだったんだろうな。

あれさえなんとかなりゃよかったのに。

結局ARMプログラムそのままじゃ動かなかったんだよな。

次のCPUは流石にその辺りは改善してくると信じたいところだがどうなんだろうな。言っても結局NPUは作れないだろうしまじ需要にあったHPC作れるのだろうか。

産業利用も研究利用も、金ぶち込んでAWSなりで借りた方が安いとか判断されかねんぞ。

G〇ggleまじで終わりがちかい・・・

広告ビジネス個人情報売るのがメインだから、結局実業とかインフラ的なものは力が入らなかったんだろね

stadiaとかcacheとか、「ニッチャリできなくて苦労だけのものバンバン切り捨てていきます!」みたいな姿勢が強まっている

そろそろだな

2024-04-06

パソコン、これから性能上がるんやろか

もう性能上がらんとか言われつつも上がってきたけど。


CPUは、クロック数は流石に限界っぽい、SRAMプロセス進んでも微細化されなくなった、

SRAM3次元で接合しても3D V-Cacheで性能上がらなかった。


メモリDDR側はレイテンシボトルネック、帯域も足りてない。

CXLで容量は増えそうだけど。


SSDPCIeの帯域増で早くなるけども、PAM4以降どうするのか。

PAM8, PAM16するのだろうけども。

FLASHの速度は変わらず、RAMキャッシュさせるのでなんとか凌いでいるのにRAMも速度上がってない。


冷却方法も新しいのは出てきていない。

コンセント供給能力限界も見えてきた。

ログイン ユーザー登録
ようこそ ゲスト さん