# Hardware Server PädNetz 2021
## Mainboard
![](https://markdown.humboldt-ka.de/uploads/upload_15c6c6e9a5531ce9032f5cc904fc036e.png)
## Festplattenspeicher
Beispielplatte unter dem Kühlkörper
![](https://markdown.humboldt-ka.de/uploads/upload_44b3fc255ff2cb19613c2b70f8e722ff.jpg)
### Gerätnamen
```console
root@serverhost1:/rpool/ROOT# nvme list
Node SN Model Namespace Usage Format FW Rev
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1 PK4620000104 XPG GAMMIX S50 1 2.00 TB / 2.00 TB 512 B + 0 B EGFM11.2
/dev/nvme1n1 7QH00RZ9 Seagate FireCuda 520 SSD ZP2000GM30002 1 2.00 TB / 2.00 TB 512 B + 0 B STNSC014
/dev/nvme2n1 7QH00SLV Seagate FireCuda 520 SSD ZP2000GM30002 1 2.00 TB / 2.00 TB 512 B + 0 B STNSC014
/dev/nvme3n1 7QH00RTP Seagate FireCuda 520 SSD ZP2000GM30002 1 2.00 TB / 2.00 TB 512 B + 0 B STNSC014
/dev/nvme4n1 7QH00WDX Seagate FireCuda 520 SSD ZP2000GM30002 1 2.00 TB / 2.00 TB 512 B + 0 B STNSC014
```
### Geschwindigkeitsmessungen
#### Zusammenfassung der Ergebnisse mit dd unten:
| Server | Serverhost (SSD) | Serverhost2 (SSD) | Serverhost2 (Raid) | Serverhost1 (neu) |
|---------------------------------|------------------|-------------------|--------------------|-------------------|
| hdparm read direct-I/O | ~400 | ~250 | ~450 | ~3000 |
| /dev/zero | 329 | 44 | 30 | ~2000 |
| /dev/urandom | 94 | 80 | ~60 | 62 |
| /dev/urandom + Direct-I/O | 77 | 46 | 21 | 62 |
| /dev/urandom + D-I/O + Sync-I/O | 60 | 28 | 15 | 60 |
- Links: https://www.thomas-krenn.com/de/wiki/I/O_Performance_Benchmarking_Tools_im_%C3%9Cberblick
- Nicht ideal: Alle NVMe-SSDs können 4400 MB/s, erreichen aber in dem PCI1e slot und beim zweiten M.2-Anschluss nicht diese Werte.
```console
// alter Server 1
root@serverhost:~# hdparm -T -t --direct /dev/mapper/vghost-hostroot
/dev/mapper/vghost-hostroot:
Timing O_DIRECT disk reads: 1300 MB in 3.00 seconds = 432.97 MB/sec
// alter Server 2
root@serverhost2:~# hdparm -T -t --direct /dev/sda2
/dev/sda2:
Timing O_DIRECT disk reads: 782 MB in 3.00 seconds = 260.31 MB/sec
// alter Server 2, RAID
root@serverhost2:~# hdparm -T -t --direct /dev/sdb
/dev/sdb:
Timing O_DIRECT disk reads: 1384 MB in 3.00 seconds = 461.20 MB/sec
// neuer Server, einzelne NVMe
root@serverhost1:~# hdparm -t -T --direct /dev/nvme0n1
/dev/nvme0n1: ## Anschluss an M.2 auf MB (nahe CPU)
Timing O_DIRECT disk reads: 13352 MB in 3.00 seconds = 4450.32 MB/sec
root@serverhost1:~# hdparm -t -T --direct /dev/nvme1n1
/dev/nvme1n1: ## Anschluss an M.2 auf MB (mit Kühlkörper zwischen PCIe )
Timing O_DIRECT disk reads: 7880 MB in 3.00 seconds = 2626.10 MB/sec
root@serverhost1:~# hdparm -t -T --direct /dev/nvme2n1
/dev/nvme2n1: ## Anschluss an PCIe16
Timing O_DIRECT disk reads: 13174 MB in 3.00 seconds = 4391.14 MB/sec
root@serverhost1:~# hdparm -t -T --direct /dev/nvme3n1
/dev/nvme3n1: ## Anschluss an PCIe1
Timing O_DIRECT disk reads: 4874 MB in 3.00 seconds = 1624.21 MB/sec
root@serverhost1:~# hdparm -t -T --direct /dev/nvme4n1
/dev/nvme4n1: ## Anschluss an PCIe16
Timing O_DIRECT disk reads: 13558 MB in 3.00 seconds = 4518.85 MB/sec
```
#### mit dd von /dev/zero
Vergleich alte Server mit neuem Server:
```console
// alter Server, idle, Softwareraid mit LVM, 4 Samsung SSDs
root@serverhost:~# dd if=/dev/zero of=/tmp.dd bs=2M count=5000 status=progress
10485760000 bytes (10 GB, 9,8 GiB) copied, 31,8302 s, 329 MB/s
// alter Server, im Produktivbetrieb, einzelne SSD per LVM
root@serverhost2:~# dd if=/dev/zero of=dd.tmp bs=2M count=5000 status=progress
6098518016 Bytes (6,1 GB, 5,7 GiB) kopiert, 137,906 s, 44,2 MB/s
// alter Server, von innen einer VM auf dem Hardwareraid
root@server ~ # dd if=/dev/zero of=dd.tmp bs=2M count=2000 status=progress
4194304000 Bytes (4,2 GB, 3,9 GiB) kopiert, 140,086 s, 29,9 MB/s
// neuer Server, idle, ZFS mit compression=on
root@serverhost1:~# dd if=/dev/zero of=dd.tmp bs=2M count=10000 status=progress
20971520000 bytes (21 GB, 20 GiB) copied, 7.25931 s, 2.9 GB/s
// compression=off
root@serverhost1:/rpool/data# dd if=/dev/zero of=dd.tmp bs=2M count=10000 status=progress
20971520000 bytes (21 GB, 20 GiB) copied, 9.77478 s, 2.1 GB/s
```
#### mit dd von /dev/urandom
Vergleich alte mit neuem Server:
```console
// alter Server 1
root@serverhost:~# dd if=/dev/urandom of=dd.tmp bs=2M count=2000 status=progress
4194304000 bytes (4,2 GB, 3,9 GiB) copied, 44,7719 s, 93,7 MB/s
// alter Server 2
root@serverhost2:~# dd if=/dev/urandom of=dd.tmp bs=2M count=2000 status=progress
4194304000 Bytes (4,2 GB, 3,9 GiB) kopiert, 52,2127 s, 80,3 MB/s
// alter Server 2, innen
root@server ~ # dd if=/dev/urandom of=dd.tmp bs=2M count=2000 status=progress
4194304000 Bytes (4,2 GB, 3,9 GiB) kopiert, 43,1894 s, 97,1 MB/s
// neuer Server
root@serverhost1:~# dd if=/dev/urandom of=dd.tmp bs=2M count=2000 status=progress
4194304000 bytes (4.2 GB, 3.9 GiB) copied, 67.6973 s, 62.0 MB/s
// compression=off
root@serverhost1:/rpool/data# dd if=/dev/urandom of=dd.tmp bs=2M count=2000 status=progress
4194304000 bytes (4.2 GB, 3.9 GiB) copied, 66.843 s, 62.7 MB/s
// iostat währenddessen (in beiden Fällen):
root@serverhost1:/rpool/ROOT# zpool iostat rpool 1
capacity operations bandwidth
pool alloc free read write read write
---------- ----- ----- ----- ----- ----- -----
rpool 14.2G 9.08T 0 58 1.61K 1.02M
rpool 14.2G 9.08T 0 0 0 0
rpool 14.2G 9.08T 0 0 0 0
rpool 14.2G 9.08T 0 0 0 0
rpool 14.2G 9.08T 0 0 0 0
rpool 14.6G 9.08T 0 7.87K 0 379M
rpool 14.6G 9.08T 0 0 0 0
rpool 14.6G 9.08T 0 0 0 0
rpool 14.6G 9.08T 0 0 0 0
rpool 14.6G 9.08T 0 0 0 0
rpool 14.9G 9.08T 0 8.40K 0 379M
```
#### mit dd von /dev/urandom mit Direct-I/O
```console
// alter Server 1
root@serverhost:~# dd if=/dev/urandom of=dd.tmp bs=2M count=2000 oflag=direct status=progress
4194304000 bytes (4,2 GB, 3,9 GiB) copied, 54,2587 s, 77,3 MB/s
// alter Server 2
root@serverhost2:~# dd if=/dev/urandom of=dd.tmp bs=2M count=2000 oflag=direct status=progress
4194304000 Bytes (4,2 GB, 3,9 GiB) kopiert, 90,8256 s, 46,2 MB/s
// alter Server 2, innen
root@server ~ # dd if=/dev/urandom of=dd.tmp bs=2M count=2000 oflag=direct status=progress
4194304000 Bytes (4,2 GB, 3,9 GiB) kopiert, 203,29 s, 20,6 MB/s
// neuer Server
root@serverhost1:~# dd if=/dev/urandom of=dd.tmp bs=2M count=2000 oflag=direct status=progress
4194304000 bytes (4.2 GB, 3.9 GiB) copied, 67.4434 s, 62.2 MB/s
// iostat trotzdem wie oben: 380M/s alle 5 Sekunden
```
#### mit dd von /dev/urandom mit Direct-I/O und Synchronous-I/O
Erst wenn man noch Synchronous-I/O erzwingt, geht der Caching-Effekt von ZFS bzw. vom Hardwareraid weg.
Bin mir nicht sicher, ob `oflag=direct oflag=sync` überhaupt stimmt, vermutlich wird Direct-I/O dabei ignoriert und nur Sync-I/O war aktiv...
```console
// alter Server 1
root@serverhost:~# dd if=/dev/urandom of=dd.tmp bs=2M count=2000 oflag=direct oflag=sync
4194304000 bytes (4,2 GB, 3,9 GiB) copied, 69,9674 s, 59,9 MB/s
// alter Server 2
root@serverhost2:~# dd if=/dev/urandom of=dd.tmp bs=2M count=2000 oflag=direct oflag=sync status=progress
4194304000 Bytes (4,2 GB, 3,9 GiB) kopiert, 150,618 s, 27,8 MB/s
// alter Server 2, innen
root@server ~ # dd if=/dev/urandom of=dd.tmp bs=2M count=2000 oflag=direct oflag=sync status=progress
4194304000 Bytes (4,2 GB, 3,9 GiB) kopiert, 284,755 s, 14,7 MB/s
// neuer Server
root@serverhost1:~# dd if=/dev/urandom of=dd.tmp bs=2M count=2000 oflag=direct oflag=sync status=progress
4194304000 bytes (4.2 GB, 3.9 GiB) copied, 69.8301 s, 60.1 MB/s
// iostat währenddessen:
root@serverhost1:/rpool/ROOT# zpool iostat rpool 1
capacity operations bandwidth
pool alloc free read write read write
---------- ----- ----- ----- ----- ----- -----
rpool 23.3G 9.07T 0 63 1.60K 1.19M
rpool 23.3G 9.07T 0 2.20K 0 70.2M
rpool 23.3G 9.07T 0 2.23K 0 72.7M
rpool 23.3G 9.07T 0 2.24K 0 70.1M
rpool 23.7G 9.07T 0 2.62K 0 74.4M
rpool 23.7G 9.07T 0 2.24K 0 70.1M
```
### CPU
- Ryzen 3950X = 16 cores mit 3500 GHz
![](https://markdown.humboldt-ka.de/uploads/upload_6bce1265e39ae1d4802038a3d9bf3e28.jpg)
### Netzwerkanschlüsse
- Gigabit onboard: Kupfer
- Dual - 10GBit/s Netzwerkkarte Intel für Ethernet
![](https://markdown.humboldt-ka.de/uploads/upload_6731c9fbb399d0808de5f5ee82e5e6be.png)
Für diese Netzwerkkarte benötigt man, entweder
- ein DAC-Kabel für einen direkten Anschluss an einen Switch (Aruba-Switch weigert sich mit dem LevelOne DAC-Kabel)
- oder ein unterstütztes SFP+ Modul: Intel E10GSFPLR (1310nm mit LC Steckern, Single Mode Fiber) oder Intel E10GSFPSR (850nm mit LC Steckern, Multi-Mode Fiber)
![](https://markdown.humboldt-ka.de/uploads/upload_81fe5dca1552cb4a157b2e8eacb43fe9.jpg)
- oder man aktiviert `options ixgbe allow_unsupported_sfp=1` auf eigene Gefahr im ixgbe-Treiber des Ethernetcontrollers.
Bisherige 10G-Anschlüsse sind,
- beispielsweise am HP-Switch im EG:
```
Transceiver in B2
Type : SFP+LRM
Model : J9152D
Connector Type : LC
Wavelength : 1310nm
Transfer Distance : 220m (50um), 220m (62.5um), 220m (50um OM3),
```
das sind vermutlich LRM (Long Range Multimode) Module von Aruba (ca. 900€ pro Stück).
- oder der Aruba-Switch mit SFP+-Modul auf der Hinterseite in R302a.
Weitere Links:
- https://www.glasfaserkabel.de/Der-Unterschied-zwischen-Singlemode-und-Multimode-LWL-Kabeln:_:13.html
- https://www.glasfaserkabel.de/Farben-und-Farbcodes-bei-LWL-Kabeln:_:14.html
## Softwareinstallationen
- Proxmox VE 7.0.2
### tools
- htop, ifstat, lm-sensors, nvme-cli