Webサーバの製作2

サーバ用CPU EPYC 7443P 24-Core 48-Threadを入手したので、Webサーバの構築を行なった。

Webサーバの仕様

表1. Webサーバの仕様
項目内容
CPU AMD EPYC 7443P 24-Core 48-Thread
3/15/2021発売 2.85GHz(ブースト最大4.0GHz)
メモリ NEMIX サーバー用メモリ DDR4-3200MHz
128GB (32GB×4枚) ECC RDIMM
マザーボード SuperMicro H12SSL-CT IPMI BMC AST2500
HDD Seagate BarraCuda 3.5" 8TB HDD 6Gb/s 256MB 5400rpm
SSD KIOXIA SSD 2TB NVMe M.2 Type 2280 PCIe Gen 4.0×4
ハードウェアRAID HighPoint RAIDコントローラー SSD7540 RAID10構成 4TB
KIOXIA SSD 1TB NVMe M.2 Type 2280 PCIe Gen 4.0×4 ×8枚
水冷 ENERMAX LIQTECH 240 TR4Ⅱ水冷式 CPU クーラー

前回のRyzenCPUの場合と微妙に異なるが、ほとんど同じ仕様になっている。 特筆すべきは、IPMIが使えること。IPMIを通じてLAN経由で他のPCから操作ができる。

IPMI first view IPMI second view
IPMI third view IPMI fourth view
IPMI third view
図1. IPMIによるサーバ管理

図1はIPMIによるサーバの各種ヘルス表示を示したものである。 ログイン画面からファンの状態までを示した。

ファンはなぜかcritical表示が出ているが、回転数が低すぎると言っているらしい。 BMCコントローラが自動で調整しているようだが、ファンの認識の問題なのか、なぜか赤表示になってしまった。 フルスピード設定にすると全てグリーンになるが、騒音が大きく、無意味なので、オプティモールに戻した。 実際には、サーバケースの2つのファンが、低速だが、しっかりと回転しているので、問題なしと判断した。 ファンを個別に設定できればよいのだが、今後の仕様変更に期待したい。

なお、サーバはアイドル状態であったが、高負荷になった場合、自動でファンの回転数が上がると思われる。 このことについては、高負荷実験を通じて検証する予定。 また、ファン3は水冷ラジエーターの2つのファンを統合したものであり、高性能ファン(max 2400rpm)を取り付けている。 そのため、回転数は高めに出ている。

Memtest86によるメモリチェック

レジスタードECCメモリを使っているので、当然ながらメモリチェックを行なった。(図2)

Memtest86 view 2
MemTest86
図2. Memtest86によるメモリの動作チェック

Memtest86を使い、メモリチェックを図2のように行なった。メモリチェックは128GBもあるので1パス完了するのにほぼ1日を要した。 上図より、ECCメモリはしっかりと認識されていることを確認した。
ECC Enabled: Yes (Multi-bit ECC correction) となっていることで確認。

BIOS設定

メモリスクラビングを24hに設定した。 (24時間後にメモリスクラビングを実行するのか、それとも少しずつ24時間かけてメモリスクラビングを実行するのかよくわかってないが、おそらく後者だろうと思っている。 まあ、どちらでもいいか。しっかりとスクラビングさえしてくれればね。)

Ubuntu22.04 OSでの設定

EDACの使用からrasdaemonに最近変更になった模様。 比較的最近の資料でもEDACを使っている例が多いので、いくらか混乱した。
まず、dmidecode --type memory コマンドを実行すると、

~# dmidecode --type memory
# dmidecode 3.3
Getting SMBIOS data from sysfs.
SMBIOS 3.3.0 present.

Handle 0x0029, DMI type 16, 23 bytes
Physical Memory Array
        Location: System Board Or Motherboard
        Use: System Memory
        Error Correction Type: Multi-bit ECC
        Maximum Capacity: 4 TB
        Error Information Handle: 0x0028
        Number Of Devices: 8
    .............
    .............
Handle 0x0035, DMI type 17, 92 bytes
Memory Device
        Array Handle: 0x0029
        Error Information Handle: 0x0034
        Total Width: 72 bits
        Data Width: 64 bits
        Size: 32 GB
        Form Factor: DIMM
        Set: None
        Locator: DIMMC1
        Bank Locator: P0_Node0_Channel2_Dimm0
        Type: DDR4
        Type Detail: Synchronous Registered (Buffered)
        Speed: 3200 MT/s
        Manufacturer: Undefined
        Serial Number: 033DE95D
        Asset Tag: DIMMC1_AssetTag (date:18/41)
        Part Number:
        Rank: 2
        Configured Memory Speed: 3200 MT/s
        Minimum Voltage: 1.2 V
        Maximum Voltage: 1.2 V
        Configured Voltage: 1.2 V
        Memory Technology: DRAM
        Memory Operating Mode Capability: Volatile memory
        Firmware Version:
        Module Manufacturer ID: Unknown
        Module Product ID: Unknown
        Memory Subsystem Controller Manufacturer ID: Unknown
        Memory Subsystem Controller Product ID: Unknown
        Non-Volatile Size: None
        Volatile Size: 32 GB
        Cache Size: None
        Logical Size: None
    ..............

の黄色で示したように、ECCメモリが認識されていることを確認できた。 (メモリは4枚あるが、そのうちの1枚のみを示した。)

rasdaemonをインストールし、コマンド実行すると、

~# ras-mc-ctl --summary
No Memory errors.

No PCIe AER errors.

No Extlog errors.

No MCE errors.

のように、エラーは全く検出されない。 ECCがしっかりと動作しているのか不安になるが、何も検出されないのはきっといいことなのだろう。

メモリのオーバークロック状態でメモリストレステストを行なうと、ECCエラーが出るらしい。 しかし、本サーバのBIOS項目にメモリのオーバークロック設定が無いため、ストレステストは無意味。 気長にメモリエラーが発生するのを待つしかないようだ。

メモリエラーが決していいことではないのだが、ECCが正常に動作しているのかどうかの確認が難しい。 サーバ用のEPYCプロセッサを使用しているので、ほぼ確実にECCは動作しているとは思っている。 他の確認方法として、最近よく耳にする「ローハンマー攻撃」というものがある。 とあるメモリに隣接するメモリに特殊な書き込みを行なうと、とあるメモリが影響を受けることがあるらしい。 将来的に、方法論がわかれば活用したいと考えている。 (メモリ自身も進化しているので、ローハンマー攻撃に強いメモリが出回れば、この方法は使えなくなるが…)

作成日: 更新日: