Чому VNC в Windows так повільно?


28

Під час тесту я міг передати повний HD-фільм через нашу мережу з комп’ютера мого друга, без проблем. Це так швидко, як я міг би хотіти.

Але VNC болісно повільний. Ми спробували Real VNC і Tight VNC, я розігрувався з Capture Methodналаштуваннями, але, здається, нічого не змінило; це просто так повільно.

Хтось має поради щодо використання VNC, як покращити швидкість чи, можливо, будь-які альтернативи?

Це природа не в змозі помітити невідомі частини екрану досить швидко, чи можливо мережева річ сповільнює його?

Ми обидва використовуємо Windows 7.

Нам потрібно мати можливість переглядати та керувати ПК один одного, не блокуючи хост, тому RDP не буде працювати (якщо хтось не знає іншого).

Відповіді:


27

VNC просто неефективний. VNC працює дуже багато, роблячи серію скріншотів, стискаючи їх і перекладаючи їх по мережі

У Windows, RDP дасть вам кращу продуктивність, але для правильної RDP вам потрібна професійна або краща версія сервера / джерела.

Wierdly віддалена допомога може працювати краще для ваших потреб - це RDP як з користувачем в терміналі, так і з користувачем у віддаленій системі, що бачить один і той же екран

EDIT: 4 роки я використовую номахін для подібних завдань - я працюю в ОС і виконую кілька інших корисних речей.


2
Так, не працює у непрофесійних версіях, хоча, мабуть , існує рішення . (І +1 звичайно, VNC смокче)
slhck

Ах, я мав би обумовити, що я робив у своїй редакції саме зараз!
Джош Комлі

одночасні сеанси, можна зробити з [хакерством] ( missingremote.com/guide/… речі VNC-стилю ... може бути віддалена допомога? Відредаговано мою відповідь, щоб включити віддалену допомогу.
Journeyman Geek

josh Ваша редакція має сенс, але зауважте останній рядок публікації @journeyman, де він каже, що "віддалена допомога" може працювати краще. Ви подивилися на віддалену допомогу? Я використовую його час від часу, і він чудово працює.
Джей Р. Врен

Відредаговано так, що віддалена допомога справді - те, що вам потрібно використовувати;)
Journeyman Geek

15

VNC не можна порівняти з потоковою передачею відео. У потоковому потоці відео типово передаєш попередньо стиснений відеопотік через мережу. Для потоків HD це часто кодується H.264. Якщо ви використовуєте VNC, то ваш хост-комп'ютер повинен робити знімки екрана та стискати їх, перш ніж надсилати їх у мережу. Тут є кілька обмежень:

  • Сильне стиснення потребує великої потужності процесора. Наприклад, кодування 90-хвилинного фільму в H.264 високої якості часто займає більше 4 годин часу на стиснення на моєму сервері Athlon X2 4450e. Зазвичай таке сильне стиснення не підходить для програм у режимі реального часу, таких як дистанційне управління.
  • Менш сильне стиснення, в свою чергу, вимагатиме більшої пропускної здатності мережі, що може стати проблемою для низькосмугових з'єднань, таких як Інтернет.

Що ж, є кілька "трюків", які застосовуються за допомогою відеокодеків та пульт дистанційного керування та утиліти спільного використання екрана. Перш за все вони намагаються виявити зміни на екрані та передати (стиснене) зображення лише змін. Зазвичай це економить багато пропускної здатності та потужності обробки. Однак для повноекранного перенесення відео це не дуже допомагає, оскільки весь екран доводиться повторно переносити. Як написано вище, поточні машини, ймовірно, не зможуть в режимі часу кодувати ваш екранний вміст у форматі Full-HD та передавати його на додаток дистанційного керування, оскільки ваш хост повинен буде декодувати відеовміст та повторно кодувати необроблені зображення перед відправкою їх до мережі. Деякі старі двоядерні машини навіть перебувають на межі, коли декодують відеоконтент Full-HD.

Щоб покращити швидкість дистанційного керування VNC, ви можете зробити наступне:

  • Більшість серверів / клієнтів VNC підтримують декілька алгоритмів стиснення. Деякі з них оптимізовані для невеликої пропускної здатності, деякі для хорошої якості зображення, а деякі для низької затримки. Це стосується іншого аспекту дистанційного керування. Оскільки сервіс має інтерактивну затримку (ви не хочете бачити реакцію на клацання миші відразу через 5 хвилин кодування).
  • Спробуйте зменшити кількість змін на екрані вашого хост-машини. Наприклад, спробуйте відключити ефекти робочого столу Windows, анімацію тощо. Це економить пропускну здатність, оскільки лише змінені частини екрану передаються по мережі.
  • Спробуйте відключити подальші візуальні ефекти на хості, як-от прозорість. Прозорі Windows, використовувані Vista / Win7, знижують "стисливість" зображень. Одноколірні / «плоскі» ділянки набагато ефективніше стискати, ніж яскраві кольори та вишукані деталі. Тож відключення прозорості Aero та ефекти на робочому столі дійсно прискорюють досвід дистанційного керування. Більшість інструментів віддаленого керування навіть дозволяють автоматично відключати такі ефекти під час підключення (наприклад, Microsoft RDP та деякі реалізації VNC).
  • Те саме стосується фонових зображень. Спробуйте використовувати однотонне налаштування фону замість HD-зображень.

Інша проблема VNC полягає в тому, що він повинен виявляти зміни на екрані. Деякі реалізації VNC роблять «німі» скріншоти та порівнюють їх із попереднім скріншотом, щоб виявити зміни. Це вже забирає багато сил. Деякі більш досконалі реалізації реалізують спеціальні драйвери дисплея (перевірте UltraVNC), які є більш ефективними тут, але вимагають встановлення спеціальних драйверів.

Звичайно, все це не допомагає, якщо ви відтворюєте відео на своєму хост-апараті. У цьому випадку VNC доведеться перекодувати ~ 30 повноекранних зображень за секунду та надіслати їх через мережу. У більшості компресій, які можуть виконуватись у режимі реального часу сучасними процесорами, такий потік потребує> 8 Мбіт / с пропускної здатності. Тому він не підходить для більшості підключень до Інтернету (особливо подумайте про асиметричні DSL-з'єднання із типовою швидкістю завантаження менше 1 Мбіт / с, і так, швидкість завантаження має значення на стороні хоста).

Можливо, це підходить для використання локальної мережі, але тут ви, мабуть, повинні більше подумати про налаштування медіа-сервера або обмін вашими носіями за допомогою медіа-сервера DLNA / UPnP (це може зробити навіть медіаплеєр Win7). Потім використовуйте клієнт DLNA для відтворення спільного носія.


1
+1, приємне пояснення. Я б також пішов на версію DLNA / Media Server.
slhck

Приємна спроба, але абсолютно неправильна, ні завантаження процесора, ні використання мережі все одно не є високим. Навіть при простому перекладі різниць це може зробити 20 кадрів в секунду через мережу 1 Гбіт.
Лотар

4

Абсолютно швидкий варіант VNC, який я коли-небудь використовував, це UltraVNC із встановленим драйвером відео дзеркала . RDP все ще помітно швидше, але це не так вже й погано.

Я також чув дуже гарні речі про ZeroRemote , але ніколи цього не перевіряв. Виявляється, TrueRemote є її наступником.


Не підтримується в GNU / Linux.
Привіт-Ангел

1

Якщо ви намагаєтесь переглядати відео через локальну мережу, найшвидше рішення з точки зору швидкості малювання екрана - це, мабуть, Radmin .


3
Випробував Радмін і, так, це комерційно, але це криваво варто! Дуже швидко. Фантастичний.
Джош Комлі

1

Як говорить @Journeyman Geek, VNC є неефективним. Це задумано так, що VNC не повинен "розуміти", що намагається відображати віддалений клієнт.

RDP насправді є, тому він може приймати ярлики та швидше відтворювати зображення. RDP повідомляє інший кінець, наприклад, "клієнт відкрив вікно в цьому місці" замість того, щоб надсилати дані растрових зображень, що представляють зміни екрана.

Там є хакі "термінального сервера", які додадуть можливості RDP до версій Windows, які не мають їх, але я офіційно не рекомендую їх, і ви використовуєте їх на свій страх і ризик. Однак я думаю, що навіть "Starter" версії Windows 7 оснащені "Віддаленою допомогою" (msra.exe), яку ви можете спробувати використати.

Однак можна покращити продуктивність VNC, зокрема, зменшити глибину дисплея до 8 біт, зменшити роздільну здатність клієнтського екрану та використовувати кеш-біт кеш-файлів. Це означає, що VNC повинен надсилати менше даних на провід, і ви відчуєте кращі показники роботи (але це не буде виглядати досить).


0

Якщо ви шукаєте продуктивність, вам не потрібно використовувати VNC, спробуйте щось на зразок LogMeIn . Це безкоштовно і працює добре.


Просто спробував LogMeIn, це зовсім не сподобалось!
Джош Комлі

3
Я люблю LogMeIn за дистанційне керування, але для відео? Не випадковість. VNC - щонайменше P2P. Він прямує між джерелом та пунктом призначення. LogMeIn вводить з'єднання через їх сервер, а це означає, що у вас набагато вища затримка. Всі проблеми з VNC плюс ще кілька. Це потужне для того, для чого він призначений, але він не розроблений для відео в режимі повного екрану в режимі реального часу.
music2myear

Я не намагаюся робити відео, я використовував відео лише як тест, щоб переконатися, що зв’язок між цими двома комп’ютерами не був повільним
Джош Комлі

0

Ви також можете спробувати TeamViewer, він безкоштовний для некомерційного використання і був досить швидким для мене. Я не перевіряв його на HD відео.


0

Для мене навіть через Інтернет (зі швидкістю пінгу> 50 мс та пристойною пропускною здатністю> 1 Мбіт / с) я отримую дуже гарну поведінку на UltraVNC. Магія полягає в зміні налаштувань з'єднання.

Після запуску програми перегляду перейдіть до "Параметри підключення", відключіть "Автоматичне вибору найкращих налаштувань", увімкніть "Тісний" та опустіть "Jpeg" для зниження якості, якщо потрібно (2-4 працює добре).

Це єдиний спосіб, з якого я знаю, як Gting Full Colors має гідну продуктивність. Після цього ви отримаєте кілька кадрів в секунду, достатньо для швидкого слайд-шоу в повноекранному фільмі (достатньо для всього, що я роблю, включаючи віддалену розробку, для перегляду справжнього фільму занадто повільно, а також звуку немає).

Крім того, на сервері "Властивості" допомагає мати (якщо не використовувати драйвер дзеркала, що значно сприяє продуктивності) мати "Повний екран опитування", "Вікно переднього плану опитування", "Вікно опитування під курсором", "Система HookDll", " Низька точність "увімкнено. В основному, майже про все зліва.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.