Можно ли ограничить использование памяти конкретным процессом в Windows?

16691
screampuff

Пользователь выполняет вычисления в Excel на очень больших листах (свыше 500 МБ) даже с 16 ГБ оперативной памяти, Excel (64-разрядная версия) сожирает всю существующую память, я видел, как она использует более 11 ГБ системной памяти.

Есть ли способ сказать, ограничить его где-то разумным, например, 8 ГБ, чтобы система не зависала и не переставляла файл подкачки, чтобы открыть новую вкладку в Chrome?

5
Если вы ограничите его, как только он достигнет этого предела, он свалится и переключится через файл подкачки. David Schwartz 6 лет назад 1
У меня все в порядке с отключением Excel, проблема заключается в том, что остальной компьютер и другие приложения не имеют доступной памяти. screampuff 6 лет назад 0
Обмен будет тормозить всю систему. Все конкурирует за доступную пропускную способность ввода / вывода. Все конкурирует за доступ к подсистеме ядра, которая переводит память между свободной и используемой. И так далее. Если бы вы могли ограничить память одним процессом, вы бы замедлили работу всей системы. Вы почти наверняка лучше выполнять расчеты быстро и эффективно. David Schwartz 6 лет назад 2
Не знаете, для чего нужны эти листы, но может оказаться, что Excel - не тот инструмент: может быть, лучше выбрать базу данных. Yorik 6 лет назад 1
объект системного задания? - https://lowleveldesign.org/2013/11/21/set-process-memory-limit-with-process-governor/ может позволить вам увидеть поведение и, если оно того стоит. HelpingHand 6 лет назад 0
`sudo cgcreate -a : -t : -г памяти:_excel` тогда `эхо > /sys/fs/cgroups.memory/_excel / cgroup.procs` then `echo $ ((4 * 2 ** 30))> / sys / fs / cgroups / memory /_excel / memory.max_usage_in_bytes` - чтобы было ясно, ``должно быть заменено вашим именем пользователя без пробелов, и``следует заменить на идентификатор процесса в Excel. Это ограничит до 4 ГиБ памяти. Omnifarious 6 лет назад 0

3 ответа на вопрос

6
Sly Mat

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

На Windows Server это можно сделать с помощью инструмента, называемого диспетчером системных ресурсов Windows, который может ограничивать объем рабочего набора, который использует процесс. Этот инструмент можно установить (не устанавливается по умолчанию) через консоль добавления компонентов в Windows Server 2008 R2.

В Windows 7/8/10 не существует решения Microsoft, способного сделать это. Вы должны установить стороннее программное обеспечение, как показано ниже:

0
Mikhail

Управляющий процессом работал отлично для меня. Открытый исходный код, лицензия MIT, простой в использовании:

procgov --maxmem 40M your_app.exe 
-5
NotReallyHere12

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

Инструкция для Windows 7:

  1. Откройте диспетчер задач (Ctrl + Alt + Del)
  2. Откройте вкладку «Процессы». Щелкните правой кнопкой мыши файл Excel.exe и выберите «Установить приоритет».
  3. Выберите новый приоритет. Большинство процессов работают в нормальном режиме, поэтому вы можете использовать значение «Ниже нормального» или «Низкое».

Это временно, поэтому вам придется делать это снова, если вы выйдете из Excel.

Источник: https://www.sevenforums.com/tutorials/83361-priority-level-set-applications-processes.html

Что означает «использование памяти, которой больше ничего не пользуется»? Я полагаю, что ваш ответ все же позволит Excel сжать всю память, но это заставит его * удерживать его ** в течение более длительного (реального) времени **. * Есть ли у вас основания полагать иначе? Пожалуйста, не отвечайте в комментариях; [отредактируйте] ваш ответ, чтобы сделать его более понятным и полным. Scott 6 лет назад 0
Редактирование сделано. Я думаю, что некоторая оперативная память может быть перераспределена Superfetch, но смысл в том, чтобы другие программы работали быстрее. Я мог бы иметь неверную идею, хотя. NotReallyHere12 6 лет назад 0

Похожие вопросы