Можно ли ограничить использование памяти конкретным процессом в Windows?
16708
screampuff
Пользователь выполняет вычисления в Excel на очень больших листах (свыше 500 МБ) даже с 16 ГБ оперативной памяти, Excel (64-разрядная версия) сожирает всю существующую память, я видел, как она использует более 11 ГБ системной памяти.
Есть ли способ сказать, ограничить его где-то разумным, например, 8 ГБ, чтобы система не зависала и не переставляла файл подкачки, чтобы открыть новую вкладку в Chrome?
Если вы ограничите его, как только он достигнет этого предела, он свалится и переключится через файл подкачки.
David Schwartz 7 лет назад
1
У меня все в порядке с отключением Excel, проблема заключается в том, что остальной компьютер и другие приложения не имеют доступной памяти.
screampuff 7 лет назад
0
Обмен будет тормозить всю систему. Все конкурирует за доступную пропускную способность ввода / вывода. Все конкурирует за доступ к подсистеме ядра, которая переводит память между свободной и используемой. И так далее. Если бы вы могли ограничить память одним процессом, вы бы замедлили работу всей системы. Вы почти наверняка лучше выполнять расчеты быстро и эффективно.
David Schwartz 7 лет назад
2
Не знаете, для чего нужны эти листы, но может оказаться, что Excel - не тот инструмент: может быть, лучше выбрать базу данных.
Yorik 7 лет назад
1
объект системного задания? - https://lowleveldesign.org/2013/11/21/set-process-memory-limit-with-process-governor/ может позволить вам увидеть поведение и, если оно того стоит.
HelpingHand 7 лет назад
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, способного сделать это. Вы должны установить стороннее программное обеспечение, как показано ниже:
Управляющий процессом работал отлично для меня. Открытый исходный код, лицензия MIT, простой в использовании:
procgov --maxmem 40M your_app.exe
-5
NotReallyHere12
Если проблема заключается в том, что у вас возникают проблемы при одновременном выполнении других действий на компьютере, вы можете попытаться уменьшить приоритет процессора Excel. Поэтому, если вы запустите что-то еще, Excel будет вынужден остановиться и ждать, так как ваша программа имеет более высокий приоритет. Это займет больше времени, чтобы закончить, но вы должны быть в состоянии сделать другие вещи в то же время.
Инструкция для Windows 7:
Откройте диспетчер задач (Ctrl + Alt + Del)
Откройте вкладку «Процессы». Щелкните правой кнопкой мыши файл Excel.exe и выберите «Установить приоритет».
Выберите новый приоритет. Большинство процессов работают в нормальном режиме, поэтому вы можете использовать значение «Ниже нормального» или «Низкое».
Это временно, поэтому вам придется делать это снова, если вы выйдете из Excel.
Что означает «использование памяти, которой больше ничего не пользуется»? Я полагаю, что ваш ответ все же позволит Excel сжать всю память, но это заставит его * удерживать его ** в течение более длительного (реального) времени **. * Есть ли у вас основания полагать иначе? Пожалуйста, не отвечайте в комментариях; [отредактируйте] ваш ответ, чтобы сделать его более понятным и полным.
Scott 6 лет назад
0
Редактирование сделано. Я думаю, что некоторая оперативная память может быть перераспределена Superfetch, но смысл в том, чтобы другие программы работали быстрее. Я мог бы иметь неверную идею, хотя.
NotReallyHere12 6 лет назад
0