Потребовалось тут собирать постгрес под мейнфреймы. В смысле s390x. Ну после некоторого опыта работы с плафтормой PowerPC я предпочитаю на партнерское железо не надеяться, и если уж нет соответствующей железяки в нашем датацентре, использовать эмуляторы.
Но ведь оно, блин, так торомозит...
Запускаю qemu-system-s390x со следующими параметрами
qemu-system-s390x -smp 16 -drive file=SLES15-SP5-Minimal-VM.s390x-kvm-Build7.1.qcow2,format=qcow2 -m 4G
Оно радостно рапортует что у него аж под 14К bogomips (при том что на хосте 4800).
fadmin@sles15-s390x:~> lscpu
Architecture: s390x
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Big Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: IBM/S390
Machine type: 8561
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s) per book: 1
Book(s) per drawer: 1
Drawer(s): 16
BogoMIPS: 13370.00
Dispatching mode: horizontal
Flags: esan3 zarch stfle msa ldisp eimm etf3eh highgprs vx vxe
vxe2
Virtualization features:
Hypervisor: KVM/Linux
Hypervisor vendor: KVM
Virtualization type: full
NUMA:
NUMA node(s): 1
NUMA node0 CPU(s): 0-15
Vulnerabilities:
Gather data sampling: Not affected
Itlb multihit: Not affected
L1tf: Not affected
Mds: Not affected
Meltdown: Not affected
Mmio stale data: Not affected
Retbleed: Not affected
Spec rstack overflow: Not affected
Spec store bypass: Not affected
Spectre v1: Mitigation; __user pointer sanitization
Spectre v2: Mitigation; execute trampolines
Srbds: Not affected
Tsx async abort: Not affected
А работает при этом медленно и печально. Ну то есть собирается то с относительно нормальной скоростью (c -j8)
26 минут постгрес и 6 минут контриб (для сравнения в user mode emulation, где число процессоров никто не ограничивает, сборка пакета постгреса (т.е. сам постгрес, плюс контриб, плюс оверхед на заворачиваение в rpm и установку Build-Requirements) занимает полчаса.
А вот тесты... make -C contrib check - пять часов, installcheck - видимо столько же - там просто тестовый скрипт не дождался и вырубил по глобальному таймауту 12 часов.
QEMU относительно свежий, 7.2. Могу поставить 8.0, но вряд ли это что-то изменит. Там changelog для этой архитектуры
- Improved zPCI passthrough device handling
- Fixed emulation of MVCP, MVCS, CHRL and CGHRL instructions
- Support for asynchronous teardown of memory of secure KVM guests during reboot
Увеличение параллельности вряд ли что-то может серьезно изменить. Там не столько параллельных процессов в тестах, чтобы задействовать сильно больше 16 ядер. Возникает странная мысль поиграться с параметрами распределения процессоров по сокетам, books и drawers (не знаю что такое books и drawers, в привычных мне писюках их не бывает). Хотя может несколько процентов я на этом выиграю, но не разы. А хотелось бы хотя бы разы.
Интересно, может помочь переход с qemu на hercules?
И вообще читают ли меня люди которые что-то в этом вопросе понимают?
![](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
kondor еще в ЖЖ ходит, например?
X-Post from
DW