Мій колега використовує додаток, який споживає багато пам'яті, що робить систему занадто повільною. Чи можливо ділитися пам’яттю з іншими ПК через Інтернет?
Система має 8 ГБ оперативної пам’яті, а додаток споживає більше 6 ГБ.
Мій колега використовує додаток, який споживає багато пам'яті, що робить систему занадто повільною. Чи можливо ділитися пам’яттю з іншими ПК через Інтернет?
Система має 8 ГБ оперативної пам’яті, а додаток споживає більше 6 ГБ.
Відповіді:
Я розглядав лише окрему програму, яка працює на "стандартній" машині без можливості просто встановити її в іншому місці або використовувати спеціалізоване обладнання або програмне забезпечення. Інші відповіді (правильно) стосуються міграції програмного забезпечення або спеціальної апаратури для виконання завдання.
Будь-який спосіб "поділитися оперативною пам'яттю" через мережу буде обмежений цим мережевим носієм. Оскільки навіть гігабітний Ethernet обмежений приблизно 100 МБ / с (мегабайти), це означає, що швидкість «оперативної пам’яті» також буде обмежена.
100 Мб / с - це невелика частка швидкості оперативної пам’яті, яка є фактично у вашій системі. Ваша програма буде болісно повільною і буде відчувати, ніби вона працює на комп’ютері з початку 90-х
Сучасні жорсткі диски для послідовного читання і запису трохи швидші, ніж це. SSD є в кілька разів швидшими.
Це ігнорування проблем із затримкою, які зроблять вашу програму на порядок знову повільнішою.
У зв'язку з повільністю та іншими технічними проблемами, це не проблема, яку хтось коли-небудь вважав варто намагатися вирішити для "домашньої" або "офісної" систем. Це дешевше і ефективніше купувати більше оперативної пам’яті, якщо вона потрібна.
Просто придбайте більше оперативної пам’яті або навіть SSD для файлу сторінки. Немає іншого способу зробити це, який не потребує шаленого обсягу роботи чи обладнання для невеликої користі.
Просто для повноти: InfiniBand дозволяє отримати прямий доступ до пам'яті інших машин.
Однак для цього потрібно:
Він НЕ працює над існуючою мережею, для нього потрібна абсолютно незалежна інфраструктура для всіх підключених вузлів. Він також НЕ працює через Інтернет
Is there any alternative solution?
Це сильно залежить від характеру даних.
Ви можете запустити 2 різні сервери mysql на 2 різних машинах.
Потім розділіть дані на 1/2 і напишіть програму, щоб автоматично знати, на який сервер перейти.
Звичайно, це можна змінити на будь-яку кількість серверів, якщо у вас їх є.
Так, це зробити досить просто (і я це зробив для бездискових систем, які потребують підкачки), використовуючи протокол Network Block Device.
Встановіть nbd-server
на серверну машину та налаштуйте її для автоматичного створення файлів-хостів.
Переконайтеся, що у ваших клієнтських машин складений NBD у свої ядра, а потім налаштуйте їх для заміни на пристрої, встановленому NBD. nbd-client
Пакет може допомогти.
Вибачте, якщо вищесказане трохи розпливчасте - машини, на яких я це робив, не доступні звідси; Можливо, я зможу заповнити дані, коли матиму доступ до них.
Існує альтернативна реалізація сервера NBD nbdkit
; Я нічого не знаю про це.
Враховуючи невеликі, неважливі деталі "Windows 10, робоча станція має 8G B ОЗУ" , насправді є лише одна розумна відповідь: Купуйте більше оперативної пам’яті та працюйте менше лайно.
Придбання SSD та розміщення файлу сторінки було б наступним найкращим варіантом, але насправді ... придбайте більше оперативної пам’яті.
Обслуговування файлу сторінки ("поділитися пам'яттю") по мережі, звичайно, можливо, але це дуже погана ідея. Хоча це правда , що існують випадки , коли прикордонними час доступу по мережі буде краще , ніж доступ до локальному диску, що це не має значення для вашого випадку використання, тому що вам потрібно постійне час низького доступу і високу пропускну здатність , в той же час. Пам'ятайте, що ви не очікуєте помилок однієї чи двох сторінок, ви постійно міняєте місцями. Якщо ви не готові заплатити пару тисяч, немає ніякого способу наблизитися до придбання оперативної пам’яті або SSD.
8 Гб майже не вистачає для одночасного запуску Windows 10 та додатка, який зберігає пам'ять. Навряд чи достатньо для одночасного запуску Word, Excel та Outlook. Це саме типова цілком непридатна "загальна фігня на фігнях", з якою мільйони людей мають жити кожен день на своїх робочих ноутбуках. Вкладіть 100-200 валюти в інший модуль пам’яті, і це амортизує його вартість протягом тижня (речі, які займають хвилин зараз, займають секунди, а час - гроші - на жаль, це часто важко потрапити в голову вашого місцевого лічильника квасолі).
Крім того, якщо ви володієте машиною, ви можете використовувати NTLite, щоб скоротити лайно Windows 10, зменшивши його пам'ять. Або ви можете просто вимкнути 80% здебільшого непотрібних послуг. Це здається неймовірним, але можливо запустити останню версію Windows з використанням 2 Гб оперативної пам’яті.
Але насправді, просто купуйте оперативну пам’ять ... це набагато швидше і простіше, ніж витрачати години вашого дорогоцінного часу на скорочення лайно Windows.
Проста альтернатива - запустити додаток на віддаленому ПК , можливо, за допомогою спеціалізованого облікового запису користувача та просто керувати ним за допомогою RDP, VNC або будь-якого зручного.
Інший варіант - тимчасово розгорнути програму в середовищі, де оперативної пам'яті можна легко змінити масштаб вгору або вниз.
Я б подивився на екземпляр Amazon AWS, який можна змінити в розмірі одним перезавантаженням.
IE такий невеликий екземпляр, як C5.large, має 4 ГБ оперативної пам’яті та 2 ядра, і коштує 2,04 долара США на день для Linux, або 4,26 долара США на день для встановлення Windows. Дисковий простір EBS - це додаткова вартість і лінійно масштабується з виділеними ГБ.
Ви можете налаштувати вашу систему в меншому розмірі, а потім, коли хочете вийти на повний шум, зупиніть її, змініть розмір примірника та запустіть програмне забезпечення.
Або найбільший ...
https://www.ec2in вещества.info/ допоможе підібрати відповідний розмір. Зауважте, деякі місця коштують дорожче, ніж інші. Сінгапур та Північна Каліфорнія дорогі. Однак ваш VM нічого не коштує, коли він не працює, крім витрат на зберігання диска.
Мінус полягає в тому, що якщо вам потрібна ця пам’ять протягом тривалого часу, придбання VM часу - це дорогий спосіб зробити це. Однак, здається, бухгалтери іноді віддають перевагу операційним витратам, як оренда, а не капітальним витратам, таким як оновлення.
Як говорили інші, це технічно можливо, але не варто.
Однак якщо ви хочете прискорити використання свого комп'ютера, можливо, екстерналізація деяких ваших програм на віддалений сервер.
В основному це залежатиме над тим, над чим ви працюєте, і яким додатком ви користуєтесь. Якщо у вас запущені програми, для яких потрібно невеликий час обробки для невеликого виводу даних, ви можете змусити їх працювати на сервері, відмінному від вашого комп'ютера, щоб заощадити час та ресурси, працюючи над чимось іншим.
Я маю на увазі приклад - сервер, який перевіряє мій код кожного разу, коли я натискаю модифікацію. Ідея такого рішення полягає в тому, що воно обмежується конкретними випадками використання.
Попросіть ІТ придбати більше оперативної пам’яті для свого ПК та продемонструйте необхідність, використовуючи скріншот використання програми в Диспетчері завдань.
Для цього існує комерційне рішення через компанію під назвою Kove ( http://kove.net/). Потрібна інфраструктура Infiniband для роботи на "задній план" (Ethernet працює нормально), хоча інші варіанти, такі як RoCE, іноді можуть бути доступні, залежно від конкретних особливостей. Вони забезпечують ряд прозорих інтерфейсів, що дозволяють інтегрувати нульову зміну коду, та API для обходу ядра з більш прямим доступом до процесора (тобто, уникаючи накладних витрат на ядро). Щодо продуктивності, це залежить від вашої заявки. Якщо ви пов'язані з процесором, то вплив може бути мінімальним (що може дивувати). Якщо пропускна здатність пам’яті обмежена на локальному хості, вони нададуть вам більше пам’яті, але вас буде заважати вже наявне вузьке місце. У цьому випадку, чи вигідніше, щоб обсяг роботи мав більше пам’яті, ніж можна поставити у вікно, а не закінчилася оперативна пам’ять? Ми побачили (дуже) хороші результати при віртуалізації та бібліотеках машинного навчання пітона. Програми HPC високого класу, як правило, гірші, але ми використовували API C і нам вдалося утримати ефективність роботи прийнятною, зменшуючи кількість вузлів (вузли були там для оперативної пам'яті, а не для процесорних циклів), що є плюсом порівняно з MPI . Чи хороше це рішення для вашого колеги, важко сказати, але це варіант, який ви можете вивчити. Сподіваюся, що це допомагає. Щоб було зрозуміло, я не працюю на Kove і не маю фінансових стимулів, але я співпрацюю з ними протягом багатьох років і вважаю, що ця технологія має можливість суттєво вплинути на певні обчислення. але ми використовували API C і нам вдалося зберегти хитові показники прийнятними при зменшенні кількості вузлів (вузли були там для оперативної пам'яті, а не для процесорних циклів), що є плюсом порівняно з MPI. Чи хороше це рішення для вашого колеги, важко сказати, але це варіант, який ви можете вивчити. Сподіваюся, що це допомагає. Щоб було зрозуміло, я не працюю на Kove і не маю фінансових стимулів, але я співпрацюю з ними протягом багатьох років і вважаю, що ця технологія має можливість суттєво вплинути на певні обчислення. але ми використовували API C і нам вдалося зберегти хитові показники прийнятними при зменшенні кількості вузлів (вузли були там для оперативної пам'яті, а не для процесорних циклів), що є плюсом порівняно з MPI. Чи хороше це рішення для вашого колеги, важко сказати, але це варіант, який ви можете вивчити. Сподіваюся, що це допомагає. Щоб було зрозуміло, я не працюю на Kove і не маю фінансових стимулів, але я співпрацюю з ними протягом багатьох років і вважаю, що ця технологія має можливість суттєво вплинути на певні обчислення.
Ще одна точка зору - можливо, проблема полягає не в обмеженні системних ресурсів, а в марному додатку, який пише ваш друг. 6 ГБ оперативної пам’яті - це дуже багато пам’яті.
Тільки тому, що багато інших додатків надмірно роздуті , не обов'язково означає, що ваш додаток для друзів повинен бути одним із них. Використання різних методів програмування дозволяє знизити потреби в пам'яті, підвищивши швидкість. Наприклад, якщо додаток завантажує цілий набір даних у пам'ять, а потім працює на ньому, буде набагато марніше, ніж, наприклад, зберігання даних у (локальній чи віддаленій) базі даних SQL з кількома вибраними індексами та доступ до них там. Змусьте обробляти дані по-блоковому, якщо це можливо, замість того, щоб завантажувати їх відразу. Структури пам'яті також можуть бути марними. Вільна пам'ять, коли ви закінчите з цим. Не завантажуйте в ОЗУ те, що ви можете замість цього зробити карту пам'яті. І сотні інших порад ...
Якщо додаток , однак на самому ділі потрібно більше пам'яті , яка повинна зберігатися на інших комп'ютерах, він може бути змінений , щоб використовувати Memcached і як зберігати його там. Бонусні бали, оскільки вони в майбутньому будуть масштабнішими.
Тож користувач попросив ЯК поділитися пам’яттю по мережі. Не, якщо це гарна ідея. Тож ось насправді, як ви могли це зробити.
Я не кажу, що це гарна ідея, чи буде виступ, але це має працювати.
Я припускаю, що це не Windows Server, де можна створити точку монтування iSCSI.
Комп'ютер 1 крок:
Комп'ютер у 2 етапи:
Готово!
Застереження - можливо, ви зможете пропустити нонсенс VHD, якщо Windows дозволить перемістити файл сторінки на мережеву папку. Прикладів цього в Інтернеті не так багато (з очевидних причин).
Може виникнути повна нестабільність системи або зовсім інше. Ніхто насправді не знає, що буде.
Оскільки ви згадуєте "ОЗУ" для спільного використання по мережі не просто "пам'яті" будь-якого виду, остаточна відповідь буде теоретично так, практично ні.
Хоча інші види пам’яті, такі як сховища та інші тимчасові дані, регулярно діляться по мережі з різних цілей та причин. Таким же чином оперативну пам’ять технічно можна розділити по мережі за потреби. Але продуктивність і вартість будуть занадто високими, щоб здійснити в реальному світі.
Оперативна пам’ять або пам'ять з випадковим доступом використовується операційною системою як робочий простір, тому на ній виконується багато операцій читання / запису. У середній системі ємність швидкості передачі даних з оперативною пам’яттю найвища порівняно з іншими частинами. Якщо ви розміщуєте оперативну пам’ять в мережі, вам потрібно мати дуже високу швидкість передачі даних, і вартість буде небіжною, навіть якщо це можливо для технічного досягнення. З невеликою частиною витрат на оновлення швидкості мережі ви отримаєте оперативну пам’ять для машини на місцевому рівні.
Програми, як правило, працюють у віртуальній пам'яті, тому їх потреба у віртуальній пам'яті може перевищувати наявну фізичну пам'ять системи без наслідків, окрім продуктивності. Операційна система просто виправить віртуальну пам’ять на диск, щоб звільнити фізичну пам'ять у міру необхідності в будь-який момент для активного використання. Зазвичай це працює чудово для додатків, які мають розумну локальність (активність у будь-який момент часу дещо зосереджена на обмежених областях у віртуальній пам'яті програми). Якщо програма має погану локальність (постійно посилається на пам'ять у всьому віртуальному просторі), вона буде погано працювати, якщо вся її віртуальна пам'ять не може бути розміщена у фізичній пам'яті (вся її віртуальна пам'ять є резидентом).
Отже, тут є кілька можливостей:
Ідея використання пам'яті на віддаленому комп’ютері - це, в основному, створення мережевого файлу підкачки . Теоретично це може працювати, але на практиці продуктивність буде набагато кращою, якщо файл підкачки буде локальним для комп'ютера (власний жорсткий диск) через пропускну здатність мережі та затримку. Не має значення, чи віддалена система розміщує файл підкачки в своїй пам'яті або на своєму диску, вузьким місцем (найважливішим обмежувачем продуктивності) буде мережа. Це особливо стосується Інтернету, але також буде правдою навіть у тому випадку, якщо віддалений комп'ютер знаходиться поруч із тією самою локальною мережею.
Це дійсно залежить від типу програми та для чого використовується таран.
Наприклад, багато веб-додатків можуть використовувати оперативну пам’ять по мережі, підключаючись до memcached
сервера. Це дозволить зберігати дані кешу (та інші дані, до яких повинен бути швидкий доступ) на іншому комп'ютері з великою кількістю оперативної пам’яті.
Звичайно, це специфічний додаток і йому потрібна програма, яка може використовувати запам’ятоване. Це не допоможе вам відкрити другий екземпляр слабій, оскільки браузер не підтримує використання такого резервного кешу.