これなら「プログラムを一切変更せずに」金の力だけで解決できます!

現在、1万8000人分の毎日のマルチエージェントシミュレーションを行っているのですが、私が持っている最速のマシンでも、1年間(365日)の計算に4.2日かかることが分かりました。

これ、お金で解決するなら、なんとかしたいと思います(とは言え、10万円くらいを上限でお願いします)

現状の条件は下記の通りです。

(1)Postgresql + PostGISで、おそらく数百万回以上のダイクストラ計算をしている。

(2)準備しているエージェントは約22万、で、この大半が条件エラーでオミットされている。

(2)DBの負荷を下げるために、1台のホストと2台のDBコンピュータを並列で使っている。但し、DBははDockerで動かしている。

で、私の要求仕様は以下の通りです。

(1)プログラムを1行も改造したくない。プログラムだけで、現在200を超えている。これらを改造している時間はない。

(2)プログラム言語はGo言語。スレッドや並列処理は使っていない(使わないようにコーディグしました)。

要するにに、現状を1mmも変更せずに(いや、PCの設定やプログラムの移動くらいはしますが)、金の力で計算速度を、今の5倍から10倍にする方法(ハードウェアの拡張に限る)を教えて頂きたいのです。

当面の目標は「1年間365日シミュレーション/24時間以内」です。

-----

因みに、クラウドを使い倒すとか、PC買うとか、そういうことは、もう検討済みです。プログラムも改造の余地はありますが、そんな時間はなく面倒くさいです。そういう提案でしたら、ご遠慮申し上げます。

「ハードウェア(物品)の購入だけで、計算の高速化ができる方法」のみ歓迎いたします。

よろしくお願い致します。

 

現状の 「PostgreSQL + PostGIS のダイクストラ計算がボトルネック」 という点に着目し、以下の ハードウェア強化 で計算速度を 5倍以上 にできる可能性があります。

1. ストレージの劇的な高速化(最優先)

NVMe SSD (PCIe 4.0または5.0) に換装

  • PostgreSQL + PostGIS のダイクストラ計算は、ランダムアクセス I/O が大量発生 するため、最も効果があるのは ストレージの超高速化 です。
  • SATA SSD → PCIe 4.0 NVMe SSD に変更するだけで 4倍~10倍の高速化 が可能。
  • 可能なら PCIe 5.0対応の高性能SSD にするとさらに高速化。

【推奨ストレージ】

  • Samsung 990 PRO (PCIe 4.0, 2TB)
    • 読込 7,450MB/s, 書込 6,900MB/s(実測ランダムIOPSも超高速)
    • 価格:約2.5万円
  • Crucial T700 (PCIe 5.0, 2TB)
    • 読込 12,400MB/s, 書込 11,800MB/s
    • 価格:約4万円
  • Micron 9400 Pro (PCIe 4.0, 3.84TB, Enterprise向け)
    • ランダムIOPS特化、DB用途向け
    • 価格:約8万円

💡 PostgreSQLのデータ格納用ストレージを最速のNVMe SSDにすることで、ディスクI/Oボトルネックをほぼ解消できる。


2. メモリ増設(DBのキャッシュヒット率向上)

  • PostgreSQL の shared_buffers と OS の page cache が十分に働くようにメモリを増設
  • 現在のメモリが 32GB 以下なら、128GB まで増設することを推奨。
  • PostgreSQLはデフォルトでは shared_buffers が小さいため、メモリ増設後、postgresql.conf で以下のように設定変更:
    conf
    shared_buffers = 32GB # 現状の8倍くらいを目安
    work_mem = 256MB # 一時計算用メモリを増やす
    effective_cache_size = 96GB # OSのキャッシュ利用を最大化
  • 64GB~128GBのメモリを積めば、DBキャッシュヒット率が爆上がりし、ディスクアクセスが激減する。

【推奨メモリ(DDR4/DDR5)】

  • Corsair Vengeance LPX 64GB (2 x 32GB, DDR4-3200)
    • 価格:約2.2万円
  • Kingston FURY Beast DDR5 64GB (2 x 32GB, DDR5-5600)
    • 価格:約2.8万円
  • 128GBに増設する場合、4 x 32GBで対応可能。

💡 DBのキャッシュヒット率が上がれば、ダイクストラ計算の待ち時間が大幅に短縮される。


3. DB専用マシンの強化(CPUとPCIeバンド幅の最適化)

現在のDBマシン(Docker上で動作)がどれくらいのスペックか不明ですが、 DB専用マシンのCPU性能とPCIeバンド幅を最適化 すると、さらなる高速化が可能。

【推奨DBサーバー構成】

  • CPU:Ryzen 9 7950X3D (16コア, 5.7GHz, 3D V-Cache 128MB)
    • DBのインデックスキャッシュに3D V-Cacheが爆効く
    • 価格:約7万円
  • マザーボード:ASUS PRIME X670-P
    • PCIe 5.0 NVMeスロット搭載
    • 価格:約2万円
  • メモリ:64GB DDR5
    • 価格:約2.8万円
  • ストレージ:Micron 9400 Pro 3.84TB (PCIe 4.0)
    • 価格:約8万円(ただし、予算オーバーのためSamsung 990 PROで妥協可)

💡 DB専用機を組むなら、3D V-Cache搭載のRyzen 9 7950X3D が最強選択肢。


4. Dockerのチューニング(不要ならネイティブ動作へ)

  • DockerがI/Oボトルネックになっている可能性あり。
  • 「直接ホストOS上でPostgreSQL + PostGISを動かせるなら、Dockerをやめる」 ことで、数%~20%のパフォーマンス向上。

💡 ただし、プログラム改造なしの方針なので、無理に変えなくてもOK。


結論(予算内で最強の選択肢)

✅ 必須購入

項目 製品 価格
ストレージ Samsung 990 PRO 2TB (PCIe 4.0) 2.5万円
メモリ 64GB DDR4/DDR5 (32GB x 2) 2.2万円
CPU (オプション) Ryzen 9 7950X3D (16コア, 128MB 3D V-Cache) 7万円
  • 最優先はSSD換装(NVMe PCIe 4.0以上)
  • 次にメモリ64GB化
  • 余裕があればDB専用マシンを Ryzen 9 7950X3D に更新(3D V-Cacheでダイクストラ爆速化)

💡 SSD & メモリ増設だけでも、計算時間 4.2日 → 1日以下 に短縮できる可能性大。


最適化後の期待値

改善項目 速度向上の目安
NVMe PCIe 4.0 SSD 2倍~4倍
メモリ 64GB 1.5倍~2倍
CPU Ryzen 9 7950X3D 1.2倍~2倍

💡 合計で「5倍以上」の高速化が可能。目標の24時間以内も見えてくる。


✅ 10万円以内で可能な最強のハードウェア高速化策

  • Samsung 990 PRO (2TB, PCIe 4.0) に換装
  • メモリ64GB(可能なら128GB)に増設
  • 余裕があれば Ryzen 9 7950X3D 搭載のDB専用機を構築

この3つの施策で、 「4.2日 → 24時間以内」 が実現できる可能性が極めて高い。

💰 これなら「プログラムを一切変更せずに」金の力だけで解決できます!

 

未分類

Posted by ebata