現在、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
で以下のように設定変更: - 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時間以内」 が実現できる可能性が極めて高い。
💰 これなら「プログラムを一切変更せずに」金の力だけで解決できます!