Поделиться оперативной памятью по сети


49

Мой коллега использует приложение, которое потребляет много памяти, что делает систему слишком медленной. Можно ли делить память с другими ПК через Интернет?

Система имеет 8 ГБ оперативной памяти, а приложение потребляет более 6 ГБ.


5
Запустить его на мощном сервере через удаленный рабочий стол, или VNC, или X11 ??
WGroleau

3
Вам лучше использовать большие накопители (жесткие диски или твердотельные накопители) в качестве кеша, как уже упоминалось в ответах.
Firebug


79
Возможно, вам повезет больше, если вы загрузите больше оперативной памяти ...
Mehrdad

4
Современные версии Windows позволяют использовать USB-накопители или SD-карты для повышения производительности. На самом деле это не означает, что устройство используется в качестве ОЗУ, но что-то, что работает между ОЗУ и жестким диском на основе диска.
Салман А

Ответы:


162

Я рассматривал только отдельное приложение, которое запускается на «стандартной» машине без возможности просто установить его в другом месте или использовать специальное аппаратное или программное обеспечение. Другие ответы (правильно) относятся к миграции программного обеспечения или выделенному оборудованию для выполнения задачи.

Любой способ «совместного использования ОЗУ» через сеть будет ограничен этой сетевой средой. Поскольку даже гигабитный Ethernet ограничен до 100 МБ / с (мегабайт), это означает, что скорость вашей «оперативной памяти» также будет ограничена.

100 МБ / с - это ничтожная доля скорости оперативной памяти, которая в действительности находится в вашей системе. Ваша программа будет мучительно медленной и она будет работать на компьютере с начала 90-х годов.

Современные жесткие диски для последовательного чтения и записи немного быстрее, чем этот. SSD в несколько раз быстрее.

Это игнорирует проблемы с задержкой, которые сделают вашу программу на порядок медленнее.

Из-за медлительности и других связанных с этим технических проблем это не та проблема, которую кто-либо, вероятно, когда-либо считал стоящей попытки решить для «домашних» или «офисных» систем. Дешевле и эффективнее покупать больше оперативной памяти, если это необходимо.

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


46
Обмен / разбиение по страницам через гигабитный Ethernet может иметь меньшую задержку, чем файл подкачки на локальном магнитном диске. например, задержка диска 10 мс по сравнению с временем пинга 1 мс для локальной сети Ethernet. Если файловый сервер, содержащий файл подкачки (или устройство iSCSI, к которому вы подключаетесь), сохраняет его в своей оперативной памяти, вы можете выиграть. IDK, если Windows поддерживает подкачку к сетевому файлу. (Я почти уверен, что Linux это делает, но это вопрос Windows). О, только что увидел, что вопрос говорит "через Интернет", так что нвм.
Питер Кордес

2
@MarkHu Учитывая, что это было задано на Super User, я не думаю, что спрашивающий имеет какой-либо контроль над кодом используемого программного обеспечения.
oldmud0

2
@PeterCordes То, что вы описываете, все еще является потерей при покупке большего количества ОЗУ или SSD. И тем более наверняка так в Windows. ;)
jpmc26

11
@TomTom для домашнего и «обычного» офисного использования гигабит по-прежнему в значительной степени то, что вы получаете на своем настольном компьютере. Тот факт, что 25G и 100G распространены (или, по крайней мере, доступны) для магистральной инфраструктуры , не означает, что вы, скорее всего, увидите ее на настольном компьютере. Я не могу даже найти настольную карту 10GigE ни у одного местного поставщика по разумной цене, не говоря уже о 25GigE. Карты 10GigE примерно в 4 раза дороже карты памяти емкостью 8 ГБ. Я знаю, что я считаю разумным обновлением.
Мокубай

9
«чувствую, что он работает на компьютере с начала 90-х» - странно, компьютеры 90-х чувствовали себя намного быстрее, чем компьютеры сегодня.
Джереми Виссер

73

Просто для полноты: InfiniBand обеспечивает прямой доступ к памяти других машин.

Тем не менее, это требует:

  • Переключатель InfiniBand
  • InfiniBand добавить на карту в каждой машине
  • Приложение должно быть запрограммировано специально для использования этого

Он НЕ работает в существующей сети, он требует полностью независимой инфраструктуры для всех подключенных узлов. Это также не работает через Интернет


53
Это также, безусловно, намного дороже, чем просто получить еще 8 ГБ или около того ОЗУ :-).
Слёске

40
О, только на один порядок или около того;)
Джеральд Шнайдер

7
Вам не нужен Infiband, RoCE также возможен. Однако для этого требуются сетевые карты, поддерживающие RDMA, и, возможно, новый коммутатор для поддержки сетевых карт, а также приложение, запрограммированное на использование RDMA.
alex.forencich

7
+1, потому что это здорово и правильно, но - для этой ситуации - совершенно бесполезный ответ :-)
daniel.neumann

1
Вы делаете - если вы не получите 25G или 100G, которые стоят дороже. RDMA не решает проблему задержки.
TomTom

19
Is there any alternative solution?

Это сильно зависит от характера данных.

Вы можете запустить 2 разных сервера MySQL на 2 разных машинах.

Затем разделите данные на 1/2 и напишите программу, чтобы автоматически узнать, на какой сервер перейти.

Конечно, это можно масштабировать на любое количество серверов, если они у вас есть.


Я подумал упомянуть, что обычно мы «разделяем память», когда активно переносим приложение на другую машину, а затем работаем с ним удаленно с помощью любых доступных методов. Это определенно альтернатива покупке большего количества памяти, особенно если другая машина уже доступна. +1
Мокубай

1
Как удаленный рабочий стол?
Иннов

4
У вас есть 2 компьютера под управлением отдельной ОС, и на каждом из них работает копия mysql. Таким образом, компьютер № 1 может быть 192.168.0.1, а компьютер № 2 - 192.168.0.2 (или любым другим). Теперь на вашем главном ПК вы можете использовать оба этих IP-адреса для получения ваших данных. Mysql или его бесплатная замена mariadb предлагает библиотеки, такие как libmysql, чтобы добавить в вашу программу, чтобы у нее был собственный доступ к mysql. Это не удаленный рабочий стол, его клиент-сервер и / или клиент и отношения нескольких серверов.
Кибернард

15

Да, это довольно легко сделать (и я сделал это для бездисковых систем, нуждающихся в обмене), используя протокол Network Block Device.

Установите nbd-serverна серверный компьютер и настройте его для автоматического создания файлов для каждого хоста.

Убедитесь, что на ваших клиентских компьютерах NBD скомпилирован в их ядра, а затем настройте их для обмена на устройство, смонтированное на NBD. nbd-clientПакет может помочь.

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

Существует альтернативная реализация NBD-сервера nbdkit; Я ничего не знаю об этом.


Я только что заметил, что у вопроса есть тег Windows. Я ничего не знаю о Windows - извините.
Тоби Спейт

8
+1, переключение через GigE в локальной сети должно иметь меньшую задержку, чем у локального магнитного жесткого диска, если файл-сервер, на который вы меняете, хранит файл подкачки в кэше в своей оперативной памяти. Время поиска HD ~ 10 мс против времени пинга по локальной сети ~ 0,25 мс. Не знаю, может ли Windows сделать что-то подобное, например, с файлом подкачки через Windows File Sharing (SMB) или любым другим протоколом, но, возможно, iSCSI мог бы работать. ОП упоминает «через Интернет»; это не будет хорошей идеей. Если ваше время пинга меньше, чем задержка произвольного доступа HD, это не победа.
Питер Кордес

Я не вижу, как это квалифицируется как «дополнительная оперативная память». Это ничем не отличается от выгрузки некоторых данных в файл на локальном диске, нет?
ivan_pozdeev

Для клиента Wndows можно использовать блочное устройство в Linux через Samba и подключить его как диск в Windows с помощью ImDisk (размер необходимо указать вручную).
ivan_pozdeev

Я также делал это в прошлом в Linux, хотя я использовал свою собственную реализацию сервера-клиента nbd, но она прекрасно работала, чтобы использовать блочное устройство nbd в качестве раздела подкачки.
hanshenrik

9

Учитывая мелкие, неважные детали: «Windows 10, рабочая станция имеет 8 ГБ ОЗУ» , на самом деле есть только один вменяемый ответ: покупайте больше ОЗУ и меньше занимайтесь ерундой.

Покупка SSD и размещение файла подкачки будет следующим лучшим вариантом, но на самом деле ... купите больше оперативной памяти.

Обслуживание файла подкачки («разделяемой памяти») по сети, конечно, возможно, но это очень плохая идея. Несмотря на то, что существуют пограничные случаи, когда время доступа по сети будет лучше, чем доступ к локальному диску, это не имеет значения для вашего случая использования, потому что вам необходимо постоянное низкое время доступа и высокая пропускная способность одновременно. Помните, что вы не ожидаете ошибок на одну или две страницы, вы постоянно меняетесь местами. Если вы не готовы заплатить пару тысяч, вы никак не приблизитесь к покупке ОЗУ или SSD.

8 ГБ недостаточно для запуска Windows 10 и приложения, требующего памяти, одновременно. Этого едва хватает для одновременного запуска Word, Excel и Outlook. Это как раз та типичная совершенно непригодная «полная ерунда корпоративная установка», с которой миллионам людей приходится жить каждый день на своих рабочих ноутбуках. Вложите 100-200 валют в другой модуль памяти, и он амортизирует свою стоимость в течение недели (вещи, которые занимали минуты, теперь занимают секунды, а время - деньги - к несчастью, это часто трудно получить в голову вашему местному прилавку бобов).

В качестве альтернативы, если у вас есть машина, вы можете использовать NTLite, чтобы сократить дерьмо Windows 10, уменьшив объем памяти. Или вы можете просто отключить 80% ненужных сервисов. Это кажется невероятным, но возможно запустить последнюю версию Windows с менее чем 2 ГБ ОЗУ.

Но на самом деле, просто купите ОЗУ ... это намного быстрее и проще, чем тратить часы своего драгоценного времени на сокращение чушь Windows.


2
Действительно ли окна так плохи для оперативной памяти? Я запускаю Debian с полной системой в оперативной памяти (без физического диска) и могу иметь десятки открытых вкладок веб-браузера, текстовые и электронные таблицы LibreOffice, редактировать фотографии gimp, а также смотреть видео или слушать музыку, оставляя около 3 гигабайт бесплатно место для программ или файлов, всего на 8GB всего. Я не ненавистник, но с ваших слов "общая корпоративная настройка BS" звучит очень похоже на сами окна ...
Xen2050

1
Ну, это спорно - ОП имеет это право. В последний раз я приобрел 8-гигабайтные машины примерно в 2010 году. Это 2017 год. Приложения, использующие 16-гигабайтную память, не являются редкостью в определенных областях (подсказка: не пишите электронные письма и нет, слово тоже подойдет, большинство людей не пишут на нем романы). Это небольшое вложение - 16 Гб памяти - это чертовски ланч или что-то в этом роде.
TomTom

7
@ Xen2050 Мне было интересно, действительно ли это так плохо, поэтому на моей машине Windows 10 с 6 ГБ я открыл Outlook, Excel, Word, Edge, у меня запущен очень маленький экземпляр SQL Server, Malwarebytes, кажется, что-то делает с 170 МБ Я открыл Visual Studio 2017, у меня открыт Firefox, и я использую 65% памяти, а Windows даже не приходилось начинать использовать сжатую память. Итак, IME, Windows 10 работает нормально с менее чем 8 ГБ ОЗУ, и, в любом случае, явная неприязнь Дэймона к Windows не имеет отношения к ответу.
Эндрю Мортон

1
@ Damon: Но если вы не провели некоторый анализ того, что потребляло дополнительную оперативную память, нет никаких оснований обвинять ее в «дерьме Windows» против «дерьма вторичного рынка, установленного работодателем». Поскольку многие люди (в том числе и я) проводили вычисления с интенсивным использованием памяти в Windows 7, Windows 8.x и Windows 10 без подобных проблем, настоятельно рекомендуется (но не доказывает), что виновник не является частью самой винды.
Бен Фойгт

6

Простая альтернатива - запустить приложение на удаленном ПК , возможно, под специальной учетной записью пользователя, и просто управлять им через RDP, VNC или любым другим удобным способом.


Если на удаленном ПК достаточно оперативной
памяти

1
@LateralTerminal Это подразумевается.
Clonkex

2
Да, объединение ОЗУ двух машин по сети ... net не подойдет, не для обычных приложений (квадратный, серый, с кнопками и меню).
rackandboneman

6

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

Я бы посмотрел на экземпляр Amazon AWS, размер которого можно изменить за одну перезагрузку.

IE небольшой экземпляр, такой как C5.large, имеет 4 ГБ оперативной памяти и 2 ядра, и стоит 2,04 доллара США в день для Linux, или 4,26 доллара США в день для установки Windows. Дисковое пространство EBS является дополнительной платой и линейно масштабируется с выделением ГБ.

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

  • m5.4xlarge - это 64 ГБ оперативной памяти и 16 ядер, по цене 18,44 долларов США в день или 36,10 долларов США в день для Windows.
  • r4.8xlarge составляет 244 ГБ и 32 ядра, по цене 51,07 долларов США / день или 86,40 долларов США / день с Windows.
  • x1.32xlarge - 1952 ГБ и 128 ядер, по цене 320,12 долл. США в день или 461,43 долл. США в день с Windows

Или самый большой ...

  • x1e.32xlarge - 3904 ГБ и 128 ядер, по цене 640,52 долларов США / день или 781,82 долларов США / день с окнами. Если вашему коллеге нужно больше, чем эта, проблема должна быть переписана более оптимальным образом.

https://www.ec2instances.info/ поможет вам выбрать подходящий размер. Обратите внимание, что некоторые места стоят дороже, чем другие. Сингапур и Северная Калифорния дорогие. Однако ваша виртуальная машина ничего не стоит, когда она не работает, кроме затрат на хранение на диске.

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


1
Я понимаю, что этот ответ не касается «доступа к оперативной памяти по сети» согласно запросу OP. Это больше похоже на доступ к удаленному хосту с большим количеством оперативной памяти. Однако, зная, как работают бюджеты в некоторых местах, это может быть правильным решением, чтобы выполнить работу с финансовой точки зрения.
Кригги

4

Как уже говорили другие, это технически возможно, но оно того не стоит.

Однако, если вы хотите ускорить использование вашего компьютера, вы можете перенести некоторые из ваших приложений на удаленный сервер.

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

Я имею в виду пример сервера, который проверяет мой код каждый раз, когда я нажимаю на модификацию. Идея такого решения заключается в том, что оно ограничено конкретными вариантами использования.


4

Попросите ИТ-отдел купить больше оперативной памяти для вашего ПК и продемонстрируйте необходимость, используя скриншот использования приложения в диспетчере задач.


4
Практическое решение ... даже если попросить ИТ-специалистов временно заменить оперативную память на другие системы, это будет "бесплатным" ответом.
Xen2050

2
@ Xen2050 Тем временем ваш коллега плачет, потому что его система больше не загружается.
Willtech

3
@Willtech - это нормально и правильно для ИТ обслуживать запасные части всех частей и запасные части целых рабочих систем. Простои - это реальная цена.
Кристофер Заложник

3

Для этого есть коммерческое решение через компанию Kove ( http://kove.net/). Для работы на «объединительной плате» требуется инфраструктура Infiniband (Ethernet работает нормально), хотя иногда могут быть доступны и другие параметры, например RoCE, в зависимости от особенностей. Они предоставляют ряд прозрачных интерфейсов, позволяющих интеграцию с нулевым изменением кода, и API для обхода ядра с более прямым доступом к процессору (т. Е. Избегая нагрузки на ядро). С точки зрения производительности, это зависит от вашего приложения. Если вы связаны с процессором, то влияние может быть минимальным (что может быть удивительным). Если вы ограничиваете пропускную способность памяти на локальном хосте, они предоставят вам больший объем памяти, но вы будете ограничены уже существующим узким местом. В этом случае выгодно ли рабочей нагрузке иметь больший объем памяти, чем можно поместить в коробку, а не кончилась оперативка? Мы получили (очень) хорошие результаты с библиотеками машинного обучения виртуализации и Python. Высокопроизводительные высокопроизводительные приложения, как правило, хуже, но мы использовали API-интерфейсы C и сумели сохранить приемлемый уровень производительности при одновременном снижении количества узлов (узлы были для оперативной памяти, а не для циклов ЦП), что является плюсом по сравнению с MPI. , Трудно сказать, является ли это хорошим решением для вашего коллеги, но это вариант, который вы можете рассмотреть. Надеюсь, это поможет. Чтобы быть ясным, я не работаю на Kove, и у меня нет финансовых стимулов, но я сотрудничаю с ними в течение ряда лет и думаю, что эта технология может существенно повлиять на то, как выполняются определенные вычисления. но мы использовали API-интерфейсы C и сумели сохранить приемлемый прирост производительности, одновременно уменьшая количество узлов (узлы были для оперативной памяти, а не для циклов ЦП), что является плюсом по сравнению с MPI. Трудно сказать, является ли это хорошим решением для вашего коллеги, но это вариант, который вы можете рассмотреть. Надеюсь, это поможет. Чтобы быть ясным, я не работаю на Kove, и у меня нет финансовых стимулов, но я сотрудничаю с ними в течение ряда лет и думаю, что эта технология может существенно повлиять на то, как выполняются определенные вычисления. но мы использовали API-интерфейсы C и сумели сохранить приемлемый прирост производительности, одновременно уменьшая количество узлов (узлы были для оперативной памяти, а не для циклов ЦП), что является плюсом по сравнению с MPI. Трудно сказать, является ли это хорошим решением для вашего коллеги, но это вариант, который вы можете рассмотреть. Надеюсь, это поможет. Чтобы быть ясным, я не работаю на Kove, и у меня нет финансовых стимулов, но я сотрудничаю с ними в течение ряда лет и думаю, что эта технология может существенно повлиять на то, как выполняются определенные вычисления.


Сколько гигабайт памяти можно купить для настройки бесконечности?
joojaa

Да, главная проблема здесь в том, что он говорит о том, что имеет только 8 ГБ памяти и что ей нужно 16. Это не «Как мне использовать удаленный оперативный памяти», а «почему, черт возьми, я использую систему с 10-летними спецификациями» ,
TomTom

@jooja У нас есть 6 ТБ. Исходя из того, что мы видели, мы не видели предела. Вы можете продолжать добавлять дополнительные устройства удаленной оперативной памяти. Кажется, он масштабируется довольно линейно, поэтому это проблема проектирования / затрат. Мы однажды разработали систему 1PB на бумаге, но, очевидно, не смогли ее протестировать.
Билл

@ TomTom Я не видел комментарий о 8 ГБ, но да, ясно, если мы говорим о 8 ГБ против 16 ГБ ОЗУ, несколько долларов за новую машину решат проблему.
Билл

Черт, за несколько сотен долларов вы, вероятно, сможете обновить ОЗУ до 32 ГБ, если материнская плата не смехотворно устарела и ограничена.
пушистый

2

Другая точка зрения - возможно, проблема не в ограничении системных ресурсов, а в расточительном приложении, которое пишет ваш друг. 6 ГБ ОЗУ ужасно много памяти.

Тот факт, что многие другие приложения чрезмерно раздуты , не обязательно означает, что приложение вашего друга должно быть одним из них. Использование различных методов программирования может снизить требования к памяти при одновременном повышении скорости. Например, если приложение загружает весь набор данных в память, а затем работает с ним, это будет гораздо более расточительным, чем, например, хранение данных в (локальной или удаленной) базе данных SQL с несколькими выбранными индексами и доступ к ней там. Сделайте так, чтобы это обрабатывало данные по блокам, если это возможно, вместо того, чтобы загружать их все сразу. Структуры в памяти тоже могут быть расточительными. Свободная память, когда вы закончите с этим. Не загружайте в RAM то, что вы можете вместо карты памяти. И сотни других советов ...

Однако, если приложению действительно требуется больше памяти, которую необходимо хранить на других компьютерах, ее можно изменить, чтобы использовать memcached и т.п. для ее хранения там. Бонусные баллы, так как это будет лучше масштабироваться в будущем.


5
6 ГБ памяти не так уж много, в зависимости от приложения. Даже конечные пользователи занимаются редактированием фотографий (фотошоп любит оперативную память, а высокопроизводительная камера снимает 64-мегапиксельные изображения), редактирование видео (НАМНОГО хуже), а затем идет математическая работа. Черт возьми, даже в Excel с удовольствием воспользуются парой ГБ. Не все пишут электронные письма, используют твиттер и другие подобные вещи.
TomTom

@TomTom Если вам нужна высокая мегапиксельная обработка, у вас будут высокие требования к памяти (по характеру запроса). Но если вы не выполняете сплайсинг генома ДНК на листе Excel, и он все еще использует несколько ГБ ОЗУ, то это именно то, что я говорю о вздорном и неаккуратном программировании. Вы знаете, например, ваш домашний бюджет успешно обрабатывался в Lotus 1-2-3 несколько десятилетий назад так же быстро (или быстрее) на машинах с ОЗУ на 3 порядка меньше (и, по крайней мере, в сотни раз медленнее процессоров), чем ваш Excel сегодня.
Матия Налис

1
Что за невежественный ансер. Я могу только предположить, что у вас очень мало опыта в том, для чего люди используют Excel. Когда Microsoft сделала 64-битную версию Office, они сказали, что она мало полезна - за исключением Access и Excel, так как некоторые люди (в основном менеджеры) проводят чрезвычайно большой анализ через Excel, используя много гигабайт памяти. Гибкость Excel и доступность для непрограммистов делают его идеальным инструментом (статистики, как правило, обучаются использованию R). Я лично видел 200 листовых файлов Excel некоторыми финансовыми специалистами.
TomTom

Если ваш домашний бюджет занимает много времени для расчета в Excel, вы намного богаче, чем я. Интересный вопрос в Excel против 1-2-3 - основной цикл calc может быть быстрее в 1-2-3, потому что он не делает так много. Но на многоядерной машине Excel легко побьет 1-2-3. И очевидно, что гигантские листы сплайсинга генома, вероятно, не откроются через 1-2-3 из-за размеров листа. В интересах прозрачности, я должен признать, что раньше работал в Excel над основной командой calc, поэтому я могу быть предвзятым ...
Крис Рей

1

Таким образом, пользователь попросил Как использовать память по сети. Нет, если это хорошая идея. Так вот на самом деле, как вы могли бы сделать это.

Я не говорю, что это хорошая идея, или она будет эффективной, но она должна работать.

  • Компьютер 1 = «мастер» - где выполняется код
  • Компьютер 2 = "ребенок" - донор памяти

Я предполагаю, что это не Windows Server, где вы могли бы создать точку монтирования iSCSI.

Компьютер 1 Шаги:

  1. Загрузите бесплатный виртуальный диск Dataram: http://memory.dataram.com/products-and-services/software/ramdisk
  2. Создайте виртуальный диск и отформатируйте его в NTFS - инструкции доступны на их сайте
  3. В Disk Manager создайте файл VHD на виртуальном диске, отформатированном с помощью NTFS.
  4. Предоставьте общий доступ к корневому каталогу Ramdisk по сети с SMB - щелкните правой кнопкой мыши на диске, поделитесь, поделитесь этой папкой

Компьютер 2 шага:

  1. Подключите общий диск из cild на диск
  2. Смонтируйте виртуальный жесткий диск, созданный на шаге 3 выше, в диспетчере дисков
  3. Переместите расположение локального файла подкачки на подключенный виртуальный жесткий диск с помощью команды Переместить файл подкачки Windows.
  4. Удалите все остальные записи файла подкачки.

Готово!

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

Может произойти полная нестабильность системы или что-то еще полностью. Никто на самом деле не знает, что произойдет.


0

Поскольку вы упоминаете «ОЗУ» для совместного использования по сети, а не просто «память» любого рода, окончательный ответ будет теоретически да, практически нет.

В то время как другие типы памяти, такие как хранилище и другие временные данные, регулярно распределяются по сети по различным причинам и причинам. Точно так же, если это необходимо, технически можно использовать ОЗУ для совместного использования по сети. Но производительность и стоимость будут слишком высоки, чтобы их можно было реализовать в реальном мире.

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


0

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

Итак, здесь есть несколько возможностей:

  • Если приложение просто занимает много места, но имеет хорошую локальность, вы сможете запустить его на компьютере, который у вас есть; производительность может быть приемлемой, может или не может заметно улучшиться на компьютере, имеющем больше памяти.
  • Если он имеет плохую локальность, вы можете обнаружить, что он все равно будет работать на доступном компьютере, но очень плохо. (Это похоже на тебя)
  • Обновите (предположительно) магнитный диск до твердотельного диска (они значительно быстрее)
  • Добавьте память на имеющийся у вас компьютер (если возможно)
  • Вам может понадобиться найти компьютер, на котором больше памяти, и запустить его на этом.
  • Усовершенствуйте приложение, чтобы оно занимало меньшую виртуальную площадь или улучшало локальность (если вы являетесь или связаны с автором приложения).

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


Windows не разрешит файл подкачки на сетевом диске, поэтому, даже если он будет достаточно быстрым, это просто невозможно сделать.
Джейми Ханрахан

@JamieHanrahan По-видимому, вы можете изменить настройки непосредственно в реестре. Интересно, исключили ли они некоторые подробности, поскольку сетевые диски для каждого пользователя в Windows. Я также подозреваю, что это сломается после перезагрузки.
ivan_pozdeev

1
Тем не менее, это ужасная идея, поэтому пользовательский интерфейс исключает ее. Сетевые соединения не достаточно надежны, чтобы доверять для пейджинга. Помните, что многие данные ядра (выгружаемый пул) могут быть выгружены. Если он недоступен, даже в течение очень короткого времени, происходит сбой ОС.
Джейми Ханрахан

0

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

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

Конечно, это зависит от приложения и требует приложения, которое может использовать memcached. Это не поможет вам открыть второй экземпляр слабины, так как браузер не поддерживает использование такого кеш-сервера.


-1

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.