Привет, у меня какие-то странные проблемы с TwinCAT (TC) в Windows-VM. Поскольку эти проблемы не возникают с другим гипервизором (vmware ESX или HyperV), я подозреваю, что проблема связана с Proxmox, KVM и/или их реализацией вложенности. Но сперва – сперва: я сейчас в процессе установки TwinCAT runtime в Windows 10-VM. Для тех, кто не знаком с TwinCAT: "Windows Control and Automation Technology", TwinCAT, – это ведущее программное обеспечение для soft-PLC, которое делает Windows способной к работе в реальном времени благодаря расширению ядра. Самое важное требование для 64-битных систем – доступ к расширению виртуализации "VT-x". Затем есть два режима работы TwinCAT: "shared core" или "isolated core". В режиме "shared core" TC совместно использует процессорный ядро с Windows, и обе попеременно выделяют время на вычисления. В режиме "isolated core" Windows настроена на использование на один ядро меньше, чем предоставляет CPU. Это "выделенное" ядро может затем использоваться исключительно TwinCAT (например, CPU на 4 ядра: Windows использует 3 ядра, а TwinCAT использует четвертое). Также этот метод – единственный способ запуска TwinCAT в 64-битной VM; "shared core" доступен только на 32-битных VM. Однако, именно здесь и кроется проблема: в 64-битной Windows VM с включенной вложенностью и режимом работы "isolated core" (4 ядра в Proxmox, 3 для Windows и одно для TwinCAT) PLC можно запустить и он работает без проблем. Нагрузка на CPU всех ядер увеличивается с 16% в режиме ожидания примерно до 19% (видно в Proxmox). Но когда я останавливаю PLC, загрузка CPU скачет на ровно 25% - выделенное ядро загружено на 100%. После этого TC больше не запускается и выдает сообщение "startup of isolated core failed". Ядро висит и остается в этом состоянии до перезагрузки VM. Однако, такая же идентичная система конфигурация (64-Bit, Win10S, nesting enabled) прекрасно работает, если используется другой гипервизор, например vmware ESX, HyperV или VirtualBox – PLC можно запускать и останавливать несколько раз. У кого-нибудь здесь был подобный опыт? Возможно ли, что в Proxmox или KVM есть ошибка, особенно когда ядро не используется Windows? Спасибо!
__ Конфигурация VM: (Самое важное – это строка "args": TwinCAT не хочет запускаться без нее, даже если cpu-config имеет те же флаги)
Code:
agent: 1
args: -cpu 'host,+pcid,+spec-ctrl,+ssbd'
boot: order=ide0;net0
cores: 3
cpu: host,flags=+pcid;+spec-ctrl;+ssbd
efidisk0: local-lvm:vm-100-disk-1,size=4M
ide0: local-lvm:vm-100-disk-0,size=32G
kvm: 1
machine: pc-i440fx-6.0
memory: 8192
name: Win10Eval-1
net0: virtio=0A:B1:A8:80:8F:ED,bridge=vmbr1,firewall=1
numa: 1
ostype: win10
parent: Ausgangsbedingungen
scsihw: virtio-scsi-pci
smbios1: uuid=c01feef2-02...
sockets: 1
vmgenid: 50f30ea3...
__ Конфигурация VM: (Самое важное – это строка "args": TwinCAT не хочет запускаться без нее, даже если cpu-config имеет те же флаги)
Code:
agent: 1
args: -cpu 'host,+pcid,+spec-ctrl,+ssbd'
boot: order=ide0;net0
cores: 3
cpu: host,flags=+pcid;+spec-ctrl;+ssbd
efidisk0: local-lvm:vm-100-disk-1,size=4M
ide0: local-lvm:vm-100-disk-0,size=32G
kvm: 1
machine: pc-i440fx-6.0
memory: 8192
name: Win10Eval-1
net0: virtio=0A:B1:A8:80:8F:ED,bridge=vmbr1,firewall=1
numa: 1
ostype: win10
parent: Ausgangsbedingungen
scsihw: virtio-scsi-pci
smbios1: uuid=c01feef2-02...
sockets: 1
vmgenid: 50f30ea3...

Были ли у тебя подобные проблемы? Какие-нибудь идеи, как от них избавиться?
Но если я загружаю машину, runtime стартует и работает отлично снова. Есть какие-нибудь идеи, как заставить это работать "как положено"?