Pull to refresh

Comments 77

Но теперь ты можешь садиться на один, не слезая с другого

они знают
с этой картинке планировал начать
с этой картинке планировал начать

Круто, взял на заметку! выглядит так, что он починил основную проблему Sunshine, сделав виртуальный дисплей. То есть не обязательно держать подключенный монитор к проброшенной видеокарте

Затычку для HDMI не предлагать?

На озоне гуглится по фразе "hdmi эмулятор". Цена 300 р.

Чел считай его просто перевернул, но пока там только две ножки

Использую в чём то похожу конфигурацию под проксмоксом... основная задача система отдельно от прокса, то есть вытащил диск воткнул в другой комп (да хоть через переходник ЮСБ - проверено) и работай на своей любимой системе где надо (этакий 2GO своими руками)

отличная статья! использовал proxmox с проброшенной видеокартой, где в виртуальной машине крутилась винда, но вот про moonlight не знал, раздражал стандартный RDP. спасибо автору!

Вместо блокирования загрузки nouveau и nova_core лучше отдать устройство в pci-stub или в vfio-pci : pci-stub.ids=1002:665c,1002:0002

я это вскользь упомянул, у меня это почему-то не сработало: что бы я ни делал, драйвер был nvidia, устройство подхватывалось хостовой ОС и его уже нельзя было передать на виртуалку.
надо будет еще покопать в этом направлении

Нужно чтобы CONFIG_PCI_STUB или CONFIG_VFIO_PCI не были модулями. Если они включены модулями, то их надо добавлять в initrd, прописывать в modules-load и pci-stub.ids писать уже в modprobe. Через модули у меня нет опыта, только догадки.

Здорово! А ещё на подумать у твоего процессор 6 ядер и 12 потоков. Это значит что 6 полноценных ядра и 6 smt урезанных.

И у твоей виртуалке может оказаться 2 реальный и 6 smt. И ядра лучше выделять парами большое ядро и его же smt ) Ну и основная система не должна на эти ядра прыгать. Называется это NUMA

Есть ещё двух чиплетные процессоры например 7900, там ты сможешь получить две независимые системы

Потоки smt не урезанные. Это 2 ядра с одним АЛУ. Т.е. два набора регистров, но в один момент времени обрабатывается только один из них. Выигрыш только за счёт того, что уменьшается количество переключений контекста, который в противном случае должен быть сохранен, а потом восстановлен из оперативки.

Конечно, если выделить виртуалке два потока одного ядра под видом двух обычных ядер, то чуда не произойдёт. Но qemu умеет задавать топологию cpu, а libvirt пинить потоки kvm на ядра cpu.

Урезанные это энергоэффективные ядра у intel.

Да не правильно сказал, при hyper treading это не урезанное ядро, а часть полного ядра, которая может дать прирост максимум 40% при удачных условиях и работе в паре с основным. Малые ядра Интел без HT значительно быстрее чем smt ядра

В спуерскалярных процессорах алу не одно, именно в эту особенность и метится smt, т.к. зависимость по входу и выходу одного потока команд часто не позволяет загрузить все исполнительные порты, а два потока вполне себе независисмы и позволяют использовать простаивающие порты исполнения.

Два набора регистров в общем случае не нужно, регистров переименования вполне хватит для этих нужд.

Выполнение команд разных потоков идет именно параллельно, а не последовательно. Прирост производительности в основном из за этого, а не из за экономии на переключении контекста, хотя переключение тоже экономит. А 100% производительности трудно достичь из за конкуренции за порты исполнения.

Но если сделать синтетику в которой потоки не конкурируют за порты, например считают только простые операции int или в одном потоке int а во втором float то 100% вполне реальны. А вот если два потока считают например одни и те же операции для которых есть только один порт исполнения, то прибавка будет стремиться к нулю.

Ну т.е. в среднем не в синтетике потоки работают как независимые ядра за счёт смешанной нагрузки целочисленных вычислений, вычислений с плавающей точкой и ввода-вывода?

А АЛУ из общего пула используются, или у двух потоков свой набор и к соседям лезть они не могут?

Отличный вопрос, зависит от того, что для вас АЛУ.

Если брать классику цпу без суперскалярности, то в ядре одно АЛУ которое действительно может выполнять одно действие за раз. И при таком раскладе СМТ действительно имело бы выигрыш только в виде в двое сокращенного времени переключения контекста.

В суперскалярном процессоре, алу это набор портов исполнения и все они специализированные, т.е. это может быть например:
1) 2 порта для простых int операций, таких как сложение, вычитание, сдвиг, битовые оперции.
2) 2 порта для сложных int операций, таких как умножение/деление.
3) 2 порта float
4) 2 порта загрузка/сохранение

Теоретические такая конфигурация позволяет выполнять 8 команд одновременно. Но заполнить работой все эти устройства тоже не так просто.

Если такой процессор работает как обычный суперскалярный, то возможна загрузка нескольких портов за счет того, что последовательные команды исполняются за разное время.

В случае если есть внеочередное исполнение, то загрузка портов будет выше, т.к. процессор будет выполнять не связанные команды раньше связанных.

А в случае если есть smt загрузка станет еще выше за счет того, что у процессора будет N потоков независимых команд.

Физически да как минимум у такого процессора будет по декодеру команд на поток и по копии управляющих и архитектурных регистров.

С другой стороны у нас есть VLIW у которой вообще 100500 портов исполнения и компилятор собирает программу так, что бы максимально загрузить все порты исполнения, но сам процессор ничего не делает для их загрузки. Поэтому потенциально оно может работать очень быстро, на что и надеялись, а на практике увы. Опять же там smt не возможна в принципе, т.к. команды выполняются строго последовательно.

Нужно еще вспомнить про современные мониторы с несколькими видеовходами и опционально встроенным KVM. Такие мониторы могут переключаться между входами, или выводить оба источника одновременно, в режиме картинка в картинке с изменяемыми параметрами (вторая ОС как будто в отдельном окне), или в режиме деления экрана. При необходимости, если подключить встроенный KVM, также могут перекидывать комплект клавомыши между двумя ОС.

Я бы посмотрел на такой монитор...

На Samsung это неюзабельно. Экран делится на 2 половинки, куда вписывется изображение в оригинальном разрешении со всеми вытекающими глазами артефактами даунскейла. HDR не работает. Ну а справа WiDi, потому что второй источник только по воздуху можно пустить, но не по кабелю. Половина площади не задействована.

Вот о чем и речь. Тот идеальный монитор с картинкой в картинке, что описывает человек выше, если и существует, то я такого не видел. Интересна модель. А такие, как этот самсунг, они не подходят

Ну например dell u3824dw вполне... если я правильно понял о чем речь...

Таких мониторов много, нужно искать по запроcу "мониторы с pip". А вот инфы об этом к сожалению мало - мало кто это реально использует.

В мониторах есть два режима: pip и pbp. В режиме pip можно менять размер и позицию субокна, в режиме pbp экран делится на две половинки, и там уже ничего толком не регулируется.

Примеры настроек меню:

И как это выглядит https://www.youtube.com/watch?v=qvt_7CUu898 правда тут моник маленький у человека, так что выглядит скорее забавно, чем полезно

Чтобы это нормально использовать, нужна достаточно большая панель, порядка 40-50 дюймов, чтобы окно другой ОС воспринималось полноценно, как обычное FullHD окно, тогда там текст нормального размера, легко читаемый, и можно открыть какое-нибудь приложение на "весь экран" в пределах выделенной области, чтобы оно воспринималось просто как отдельное окно на хосте. Если потребуется, в меню, или по кнопке с пульта, можно менять источники местами (быстро растянуть окно на всю панель), перекидывать аудиопоток (если это не виртуалка, тогда внутри хоста звук не микшируется) или переключать kvm.

Интересно! Когда-то у меня был вот такой сетап: пека с виндой и хорошей видеокартой стоит под столом, для игр и прочего. На столе ноутбук для работы. И тот и другой подключены к двум моникам, так что можно кнопками выбора видеовхода переключаться. В один прекрасный день совмещать игры и работу показалось губительным для продуктивности, и пека уехала под стол в соседнюю комнату на рабочее место жены. Пока такой сетап считаю идеальным, рабочая и не рабочая зоны разделены, лучше концентрируюсь на задачах, и лучше отдыхаю за играми.

Я еще сверху между ними переключаюсь Barrier/Input Leap 👍

Да, зашёл написать коммент, что монитор можно подключить двумя разными кабелями и переключать видеовход

Делал так. Но неудобно: хост видит его, думает что он подключён и шарит рабочий стол на два монитора. А ты половину не видишь. И постоянно переключать туда-сюда задалбывает.

Программный клиент удобнее

А что насчёт железного KVM? Я уже не представляю себе жизнь без такого

Думал об том. Пока еще не дозрел до покупки, но идея интересная

ddcutil в помощь - программно переключает входы мониторов, есть и для винды тула. но есть нюансы в вендорами, например LG тупо забила на стандарт и там никак оно не работает

а Герои через Proton разве не бегают? Я вот всё думаю перебраться на Линукс на постоянной основе со стимом на протоне, но пока сдерживаю себя.

И по теме вопрос - если у вас конфигурация ЦПУ 6/12 то какой смысл отдавать в виртуалку 8 ЦПУ? И почему у вас Балда тормозила из-за ЦПУ? ВРоде бы игра про мультипроцессорность ничего не знает.

Могу точно сказать про герои, что есть чудный порт VCMI, принимающий оригинальные файлы игры (я беру от гога) и работающего примерно везде

ну это только одна из еще 200 игр, плюс выходит что-то современное на юнити всяких... то что скорее всего из стима будут работать это понятно, но не все игры в стиме.

Бегают, даже на голом вайне бегают прекрасно. И цива, и балда, и фар край и почти все на самом деле, с приемлемой производительностью.

С ЦПУ похоже заморочка самой виртуалки. Я приложил скриншоты, если выбрать 8 сокетов виртуалка почему-то воспринимает его как 2 vcpu, а если один сокет по 4 ядра по 2 потока - то как 8 vcpu. Двух игре видимо не хватает; virt manager видит стабильную загрузку 25%, то есть те два из 8, которые ось видит, загружены полностью.

в качестве пожелания - использовать для показана данных о ЦПУ режим с отображением логических ЦПУ, так проще воспринимать, а то у меня первая же реакция по тормозам была оставить комментарий про 1 ЦПУ.

Да, согласен, так нагляднее

У домашней винды ограничение на два сокета. Вот и весь секрет. В диспетчере устройств будет видно все ядра. Ограничение чисто лицензионное. Если установить серверную винду, она увидит все ядра при любой конфигурации сокетов.

Спасибо. это все объясняет

У меня герои3 (правда, без дополнений) поставлены нативные, из .deb :-)

Работают, но требуют поддержки 32-бит в системе.

У меня Linux как основная система.

Если нужна Windows не в виртуалке:

  1. Загрузка Ventoy флешки,

  2. F3, выбор W10.VHDX в разделе NTFS на диске. Да хоть где - хоть на флешке - вопрос в скорости.

    W10.VHDX - файл с предварительно установленной в него виндой.
    Чтобы сработало - д.б. файл ventoy_vhdboot.img в папке ventoy на флешке.

    Как только пошла загрузка - флешку с Ventoy можно вынимать.

    Если очень хочется, то этот VHDX файл можно подсунуть в Linux виртуалку, и грузить оттуда.

У вас винда в файле образа на NTFS разделе?! Умеете в извращения, однако.

Это очень удобно.
В принципе, можно любые версии виндов и linux в любых количествах держать в vhdx файлах на ntfs разделе без всяких dual boot и без 2го и более физических дисков.

Меня именно NTFS смущает. Во-первых, оно сильно медленное под Linux. Ужасно медленное. Катастрофически медленное. Во-вторых, вы запускаете Win из под Linux, но хранится он в файловой системе Win. Зачем вы себя мучаете? Используете Ext4!

NTFS под Linux вообще не при чем.

Под Linux у меня свои FS типа BTRFS.

NTFS могу примонтировать при надобности.

Без виртуализации я могу любую ОС (в данном случае речь шла о Win) в VHDX запустить из 1 только NTFS раздела.

Ventoy не умеет читать VHDX из EXT4. Только NTFS / FAT.

При всем при этом я могу и из-под Linux запустить эту же ОС как виртуалку, подсунув VHDX.

Тоже подумываю замутить что-то подобное, но мне хочется и основную систему (linux) запускать в виртуальной машине, чтобы снапшоты делать и всё такое. Пока не пойму, как всё это будет выглядеть.

Снапшоты можно делать или встроенными средствами, либо средствами файловой системы KVM или btrfs.

Мне очень нравится libvirt-qemu-kvm, выглядит быстрее и органичнее VMware workstation и vitrualbox.

А можно кстати поставить взрослый гипервизор без графики с автостартом виртуалки и мгновенным автоматическим пробросом видеокарты. По идее, пользователь вообще ничего заметить не должен, пара секунд дольше и темный экран в ходе загрузки, в потом нормальный linux или винда или что душе угодно.

Основная система должна быть тоже виртуалкой с пробросом ресурсов, а не хостом...

Какую-то одну систему все же придется делать хостом((

Можно собрать минимальную систему с qemu (из той же генты, например), а полноценные системы использовать только в виртуалках. Надо только наладить удобное управление хостом из основной системы, т.е. из гостя (такое возможно вообще?), чтобы обновлять хостовую систему и т.п.

ssh + ansible/chef/etc.

Вы сейчас xen придумали

Proxmox с пробросом gpu, мыши, клавы (+ монитор подкл) в нужную вм.

И тогда при загрузке вм с проброшенным gpu на мониторе отобразиться рабочий стол этой вм и можно будет работать как обычно.

Зы. Кстати, нек-ые gpu от nvidia можно "заставить" уметь vgpu

https://gitlab.com/polloloco/vgpu-proxmox

Зы2. Про proxmox и не только https://forum.netgate.com/topic/163435/proxmox-ceph-zfs-pfsense-и-все-все-все-часть-2

Я аналогично "сохранил" свой старый Thinkpad T61 с W7, кучей настроенного софта и окружения.

Windows 10, Hyper-V, виртуалка с ноутбучным SSD. В любое время можно перекинуть SSD обратно в ноутбук, что выгодно отличает его от VHD. Конечно пропадает возможность снапшотов, но тут пришлось расставлять приоритеты. К сожалению прокинуть видеокарту не удалось, надо будет вернуться к этому вопросу.

Или можно сидеть на Винде и юзать WSL ..

... или не страдать фигнёй и юзать hyper-v, который и так используется для WSL

Зачем грузиться 3 секунды, когда можно 30!

3 секунды это из-за ядра, которое ms собирает для wls. Соберите себе ядро со всеми нужными модулями вкомпиленными для виртуалки и тоже 3 секунды получите.

У кого-то с версии 2.5 отвалился user systemd сеанс, в версии 2.6 говорят починили, но по факту все ещё не работает.

Очень круто! Мечтал о таком во времена WindowsXP, но тогда не хватало знаний. А сейчас остался только Linux - необходимость в windows практически пропала.

В те времена вот так пробросить видюху вряд ли получилось бы. Проброс pci-e устройств в QEMU появился относительно недавно (лет 10?), а стал вот таким простым как в статье и того позднее.

В те времена до 2005 года и аппаратной виртуализации не было, если не считать V86.

Сижу на очень похожем сетапе в плане видюхи. Диск не пробрасывал и живу с файликом, лежащим на хосте, но как раз планирую купить отдельный SSD.

Дуалбут - интересное решение, но я так и не понял зачем? При выводе на монитор с выхода проброшенной GPU картинка идеальная, производительность не теряется почти ни в чём, в каких ситуациях вы перезагружаетесь в неё?

но я так и не понял зачем

потому что могу =)

На самом деле это не было целью, я сам удивился, когда grub вдруг нашел ОС.

Но оказалось удобно, за моим компом сидят другие люди, которым не очень интересны эксперименты с Линуксом. Вот они сразу загружаются в Винду и работают там, как будто Линукса и нет.

Тоже интересовался подобным запуском. Вроде как это нарушение лицензии windows. Запуск в виртуальной среде рассматривается как отдельное окружение и требует отдельной лицензии.

Кого это сейчас вообще волнует?

Ну не только же Microsoft нарушать договоры.

Может кто уже писал, но зря вы недооцениваете RDP, аппаратная поддержка GPU того стоит.

WIN + R

gpedit.msc

Конфигурация компьютера > Административные шаблоны > Компоненты Windows > Службы удаленных рабочих столов > Узел сеансов удаленных рабочих столов > Среда удаленных сеансов

Использовать аппаратные видеоадаптеры для всех сеансов служб удаленных рабочих столов - Включено

Единственное, я не смог распределить нагрузку по сеансам на разные GPU, экспериментировал с серверов RDS и несколькими пользователями.

Там же можно поиграться с UDP

В игры не получится играть нормально, если там управление в 3д мире. В целом игры, для получения движений мыши позиционируют её в центр экрана, и на каждом кадре считают дельту смещения и преобразуют в движение в игровом мире. При rdp сессии мезанизм позиционировании мыши не работает. Но в игры типа sims играть вполне нормально. Ещё если игра поддерживает только полноэкранный режим, тоже будут проблемы. Нужен типа псевдо полноэкранный, когда игра запущена в окне на всю площадь экрана.

У нас я использую это для работы Компаса на сервере для конструкторов. То есть 3D модельки нормально отрисовываются и в целом нагрузка идет именно на GPU.

Другое дело, я не смог настроить справедливое разделение ресурсов, но если сравнивать по цене, это топ. Дело в том, что альтернатива это платные лицензии Nvidia на виртуальные GPU, еще более дорогие сами GPU. Плюс не тривиальная настройка.

А так какую-нибудь не сильно дорогую GPU Ampere на сервере RDS вполне хватает на несколько человек.

Не знал, спасибо за рецепт.

Попробовал, по ощущениям стало плавнее, но игры все равно двигаются рывками. Оставлю для работы со статическими картинками, документами и пр.

Rdp на udp по дефолту еще с вин10, вроде.

Т.е. сперва идет попытка подкл по udp и в случае неудачи перекл на tcp.

Вообще, для виртуалок с пробросом видюхи есть https://looking-glass.io/, у которого ещё меньшая задержка и никаких артефактов.

Забыли упомянуть, что host там только для Вин.

Sign up to leave a comment.

Articles