Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Поставить юзверя на "паузу" (http://forum.oszone.net/showthread.php?t=343240)

vombat2 10-12-2019 21:56 2899861

Поставить юзверя на "паузу"
 
Всем привет.
Идея возникла из обсуждения http://forum.ixbt.com/topic.cgi?id=22:91540:294#294. Я там под ником cheloyekus
Можно ли сделать скрипт, чтобы при выходе из пользователя (смене) все его процессы ставились на "паузу" и выгружались из памяти, а при входе "размораживались"?

Iska 10-12-2019 23:07 2899868

vombat2, есть три варианта решения озвученной там проблемы:
  • бесплатный — принудительные пароли и завершение сеансов (вместо смены пользователя);
  • слегка платный — докупите оперативной памяти;
  • просто платный — купите по отдельной машине на каждого пользователя.
Всё остальное — от лукавого, и не решается ни скриптами, ни чем другим. Что можно выгружать в подкачку, а что — нет, определяется разработчиками на этапе создания приложения. Далее этим управляет ОС по своему усмотрению. Т.н. «заморозка» (suspend) ничего в этом плане не даёт, кроме высвобождения «тиков» процессора.

vombat2 11-12-2019 01:35 2899877

Вложений: 2
Цитата:

Цитата Iska
Т.н. «заморозка» (suspend) ничего в этом плане не даёт, кроме высвобождения «тиков» процессора. »

Как минимум снижение энергопотребления в определенный нужный момент, ну и освобождение ресурсов для других сиюминутных задач. Практически мгновенное освобождение ресурсов, и столь же быстрый возврат рабочей среды. Стоит упомянуть, что в моем случае файл подкачки установлен на SSD, что также дает большой прирост в скорости.
Во вложениях - FF с 148 вкладками "заморозка"/"разморозка".

Iska 11-12-2019 08:38 2899895

Цитата:

Цитата vombat2
ну и освобождение ресурсов для других сиюминутных задач. »

Цитата:

Цитата vombat2
Практически мгновенное освобождение ресурсов, »

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

Давайте будем честны: Вам не нужны «все процессы», Вам достаточно приостановить работу браузера, как основного потребителя оперативной памяти. Посему возьмите PsSuspend64.exe (PsSuspend - Windows Sysinternals | Microsoft Docs) из комплекта PsTools (PsTools - Windows Sysinternals | Microsoft Docs) и сделайте два ярлыка на него в общем Главном меню или общем Рабочем столе — один на suspend процессов браузера текущего пользователя, другой — на resume их же.

Busla 11-12-2019 10:39 2899912

Цитата:

Цитата vombat2
Можно ли сделать скрипт, чтобы при выходе из пользователя (смене) все его процессы ставились на "паузу" и выгружались из памяти, а при входе "размораживались"? »

Вот отчасти для этого MS и начал продвигать UWP. Правда, в контексте браузеров это только UCbrowser

Iska 11-12-2019 11:18 2899917

Цитата:

Цитата Busla
Вот отчасти для этого MS и начал продвигать UWP. »

Если верить написанному (найденному навскидку):
Цитата:

Из состояния Suspended приложение может перейти в состояние Running или же в случае, если системе необходимы ресурсы, то работа приложения может быть завершена.
здесь Application Lifecycle в приложениях Windows 8.1 и UWP / Хабр, то мне бы такого совершенно не хотелось. И — нет, мне не хочется и такого:
Цитата:

Если приложение работает на десктопе, то в режим Suspended оно переходит после того как пользователь сворачивает приложение. В режиме планшета приложение приостанавливается после переключения на другое приложение (в 8 и 8.1 перед приостановкой проходит несколько секунд, в 10-ке все происходит гораздо быстрее).
— чтобы на каждый чих несколько гигабайт сбрасывались в файл подкачки/восстанавливались из него (если остальная работа с памятью в ОС ведётся по тем же принципам, что и раньше [а если нет — то для чего было огород городить, только из-за энергопотребления?]).

vombat2 11-12-2019 12:24 2899929

Цитата:

Цитата Iska
— чтобы на каждый чих несколько гигабайт сбрасывались в файл подкачки/восстанавливались из него (если остальная работа с памятью в ОС ведётся по тем же принципам, что и раньше [а если нет — то для чего было огород городить, только из-за энергопотребления?]). »

Вот для примера, приведу 2 стандартные обыденные ситуации (осн. на реальных событиях).
1 ситация) Молодая мама, работает за ПК, на всякий случай не моя жена, но ситуация из жизни, работает за ПК, открывает там кучу программ (по работе), где-то что-то читает, куча вкладок, где-то пишет, где-то считает, где-то чертит и т.д. Затем встает, чтоб отдохнуть или сварить каши, с чувством полной безопасности или легкого пофигизма ни чего не сохранив, пароль у нее надежный. Радосный шкед подбегает чтоб зарядить свои любимые "червячки" или "танчики", но ни чего у него не работатет все дико виснет. Он, не будь дурак, делает перезагрузку, после чего все начинает фурыкать, как и ожидалось. Спустя время подходит мама, и начинаются дикие крики, стоны.. Я о чем.. детей жалко.
2 ситация) 2 студентки, одна пишет диплом, другая курсовую, у них один ПК, возможно они сестры..
3 ситуация) Мать, бабушка, шкед...
В общем, лень описывать, ситуаций может быть море, когда одним компом могут пользоваться несколько человек и когда нужно сохранить именно рабочее пространство, именно так как все открыто - может быть это какие-то карты, или планы участка и т.д., таблицы, вкладки, когда человек просто потеряет уйму времени все переоткрывая и перевосстанавливая.. И в тоже время другому надо срочно что-то посмотреть, что-то сделать, не затрагивая чужого "бардака". Частенько с таким сталкивался..

dislike 11-12-2019 12:59 2899933

Цитата:

Цитата vombat2
ни чего не сохранив »

Извините, у большинства программ есть настройки автоматического сохранения проделанной работы по таймеру (яркий пример: MS Word).
Вкладки браузера - сами сохраняются и восстанавливаются при перезапуске браузера, если кто-то не поленился потратить минуту времени на изучение тех же настроек. Остальное не так критично, проблема же перезагрузки "шкетом" решается разграничением прав доступа к машине и обрезанием ему ненужных функций через политики.

Цитата:

Цитата vombat2
2 студентки, одна пишет диплом, другая курсовую, у них один ПК, возможно они сестры.. »

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

Цитата:

Цитата vombat2
И в тоже время другому надо срочно что-то посмотреть, что-то сделать, не затрагивая чужого "бардака". »

Вторая учетная запись + много ОЗУ, благо она сегодня не так чтоб очень дорогая.

vombat2 11-12-2019 13:42 2899939

Если чес. не хочется ни кому ни чего доказывать, но данный вопрос меня мучил еще в далеких 2000х когда вопрос спамятью и быстродействием стоял более остро, но учитывая и тогдашний уровень технологий и несовершенство самой оси (XP) с процедурой заморозки и загрузки/выгрузки обычно случались траблы. Недавно обзаведясь недорогим SSD и установив на него файл подкачки (собственно для этого и был приобретен девайс) вдруг вспомнил и решил проверить фичу - все работает причем до удивления быстро и стабильно. Можно наоткрывать кучу вкладок, окон, приложений, потом заморозить (хоть буквально всего пользователя), выгрузить из памяти, затем разморозить и также быстро все вернется в рабочую среду - считанные секунды. Еще заметил такой нюанс - попытался открыть в FF 2017 кучу вкладок, но все зависло, в то время как процессор был занят лишь на 1/3 своей мощности. Современные же FF и Crome спокойно справляются и с 150 и с 200 вкладками (при условии размещения конечно свапа на ssd) и процессор используют на 100%. Данные обстоятельства меня не могут не радовать, можно сказать дожил, увидел технологии!)). Данный скрипт мне не необходим, просто хотелось сделать его для людей, или, так скажем, поделиться мыслью. Может быть сам как-нибудь его напишу, если будет время поразбираться, скорее всего лучше, я думаю, сделать в AutoIT..

vombat2 11-12-2019 14:02 2899946

Вложений: 1
Цитата:

Цитата vombat2
также быстро все вернется в рабочую среду - считанные секунды. »

Здесь боее наглядно (объем озу 8гб) - выгрузка, suspend, resume (позже выключение) - гигобайты выгружаются и залетают вновь в считанные секунды без особой нагрузки на процессор и диск, в то время как повторная загрузка чего-либо займет куда больше времени.

vombat2 11-12-2019 14:07 2899948

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

Iska 11-12-2019 14:52 2899959

Цитата:

Цитата vombat2
но учитывая и тогдашний уровень технологий и несовершенство самой оси (XP) с процедурой заморозки и загрузки/выгрузки обычно случались траблы. »

Ничего не изменилось :). Это значит лишь, что Вы ещё не наступали на эти «грабли».

Цитата:

Цитата vombat2
выгрузить из памяти »

1) Из памяти ничего не выгружается, она как была, так и остаётся использованной; 2) да не управляете Вы самолично сбросом страниц в файл подкачки, забудьте уже об этом.

Цитата:

Цитата vombat2
затем разморозить и также быстро все вернется в рабочую среду - считанные секунды. »

Оставьте запущенными условные «танчики» и попробуйте сделать resume — увидите разницу. А если у Вас будет не SSD — смело сможете сходить перекурить во время данного процесса.

Цитата:

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

Дык, кто ж запретит… Пишите.

vombat2 11-12-2019 15:38 2899966

Цитата:

Цитата Iska
1) Из памяти ничего не выгружается, она как была, так и остаётся использованной; 2) да не управляете Вы самолично сбросом страниц в файл подкачки, забудьте уже об этом. »

Она становится "доступной" правильнее наверное так, а использованой разве что под ram-кэш, или, как бы это, в прошедшем времени. Картинки я привел, или может Русинович для вас не авторитет!?
Цитата:

Цитата Iska
Оставьте запущенными условные «танчики» и попробуйте сделать resume — увидите разницу. »

Вопрос какие, йа в них не разбираюсь, может подсажете те что пожирнее, чтоб наглядно т.ск.?:)
Цитата:

Цитата Iska
А если у Вас будет не SSD »

Такую "возможность" также надо будет проверить, хотя б для науки

Iska 11-12-2019 16:18 2899970

Цитата:

Цитата vombat2
Она становится "доступной" правильнее наверное так, »

Да не становится она доступной. Память как была занятой, так и осталась. Она занята.

Цитата:

Цитата vombat2
Картинки я привел, или может Русинович для вас не авторитет!? »

А Вас не смущает надпись Physical Memory на Ваших картинках? Я же веду речь про виртуальную память, ту, которая выделяется приложениям и самой ОС по их запросам. И пока приложение не будет завершено (или оно самостоятельно не «отдаст» её вобрат — например, мы взяли, да и закрыли 800 из 1000 вкладок браузера), эта память так и останется занятой/выделенной/использованной. Делая suspend процессам приложения, Вы просто позволяете операционной системе эффективнее сбрасывать его устаревшие страницы из физической оперативной памяти в файл подкачки — когда возникает потребность в таковой.

Цитата:

Цитата vombat2
Вопрос какие, йа в них не разбираюсь, может подсажете те что пожирнее, чтоб наглядно т.ск.? »

Условные. Я в них тоже не разбираюсь.

vombat2 11-12-2019 16:43 2899975

Цитата:

Цитата Iska
пока приложение не будет завершено (или оно самостоятельно не «отдаст» её вобрат — например, мы взяли, да и закрыли 800 из 1000 вкладок браузера) »

А в чем собственно спор? Главное есть - освобождается озу практически полностью, а также процессор для работы других приложений, т.е. вычислительную мощность можно дальше использовать в полном объеме. А файл подкачки пусть себе растет ему от этого хуже не стант)
Цитата:

Цитата Iska
Оставьте запущенными условные «танчики» и попробуйте сделать resume — увидите разницу. »

Из имеющихся на борту сейчас проверил Dirt4 вместе со всеми стимами-шмимами, спокойно "засыпает" и "просыпается" и едет дальше

Iska 11-12-2019 17:41 2899980

Цитата:

Цитата vombat2
А в чем собственно спор? »

1. В том, что занятая память не «освобождается», а остаётся занятой.
2. Вы не можете управлять непосредственно, чем будет занята физическая память, это прерогатива операционной системы. Вы можете лишь пытаться влиять на сие опосредованно (чем Вы и занимаетесь, делая suspend/resume ресурсоёмкому приложению). Это сродни всяческим приснопамятным «оптимизаторам» и «чистильщикам» оперативной памяти, вся суть которых заключалась в запросе у операционной системы N Mb оперативной памяти и попыткам активного вытеснения страниц памяти других приложений в файл подкачки — по факту же ничего не «освобождалось» ни на гран.

Цитата:

Цитата vombat2
Из имеющихся на борту сейчас проверил Dirt4 вместе со всеми стимами-шмимами, спокойно "засыпает" и "просыпается" и едет дальше »

Вы не поняли меня. Ну, да ладно.

vombat2 12-12-2019 06:08 2900046

Речь то о том, что можно быстро переключаться между разными нагружными задачами. Вот монтируете Вы допустим видео, понадобилось что-то срочное, Вы его бульк в свап и запускаете, какой-нибудь 3d-кад, ворд, ексель и т.д. Потом все это также - "бульк" и "достаете" вновь видеоредактор и продолжаете монтировать. Играет там ребенок (может быть большой "ребенок") в какой-нибудь игур и вот уже, осталось немного до окончания миссии, приходит мама и г-рит "прыгай отседа, мне надо посмотреть подсветочники, и ты вообще уже 2 часа сидишь" он все сворачивает уходит, мама перелогинивается и спокойно смотрит свои подцветоники, одноклассники и т.д. Это только частные случаи и конечно нужен SSD и как минимум средний процессор. Хотя в принципе и на слабом проце (1.4 ггц 2 core) с hdd все работает, разве что не так быстро, но для слабых процов не актуальны нагружные задачи.

vombat2 13-12-2019 11:36 2900204

Цитата:

Цитата Busla (Сообщение 2899912)
Цитата:

Цитата vombat2
Можно ли сделать скрипт, чтобы при выходе из пользователя (смене) все его процессы ставились на "паузу" и выгружались из памяти, а при входе "размораживались"? »

Вот отчасти для этого MS и начал продвигать UWP. Правда, в контексте браузеров это только UCbrowser

Кстати шустрый браузер, надо погонять на телефоне..

vombat2 13-12-2019 12:35 2900211

Сыроват US Browser, интерфейс не внятный, не согласуется с функциональными клавишами Андроида, грузит быстро, но управление портит все впечатление.

vombat2 16-12-2019 04:27 2900632

Пока что выяснил, как вывести все процессы пользователя в файл
Код:

chcp 1251
tasklist /FI "username eq user" >D:processes.txt

где user - имя пользователя
chcp 1251 - для вывода в удобочитаемой кодировке

vombat2 16-12-2019 08:31 2900651

Так можно "притормозить" все процессы "chrome.exe" пользователя "user":
Код:

tasklist /FI "username eq user" | findstr /i "chrome.exe" > userlist.txt
for /F "TOKENS=2" %a in ('type userlist.txt') do (pssuspend %a)

Разморозить:
Код:

for /F "TOKENS=2" %a in ('type userlist.txt') do (pssuspend -r %a)
Не знаю насколько правильно, просто подсмотрел данный метод отбора на одном форуме. Поскольку в текствоый файл вноситятся не только названия процессов и их "пиды", может быть так, что переменная %а совпадет не с пидом, а с размером процесса и стопарнется какой-нибудь нужный процесс, а так х.з.
Для заморозки используется русиновичевская "PsSuspend", закинутая в системный каталог
Вопрос с выгрузкой из памяти остается открытым..

Iska 16-12-2019 17:37 2900737

Цитата:

Цитата vombat2
Вопрос с выгрузкой из памяти остается открытым.. »

Закрытым, коллега, закрытым. Вы никак не можете на это повлиять. Что бы не рекламировали многочисленные «оптимизаторы памяти».

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

vombat2 17-12-2019 03:00 2900827

Цитата:

Цитата Iska
Как только у какого-то приложения возникнут обширные потребности в памяти (при нехватке последней), так сразу страницы памяти, занятые suspended-процессом, начнут активно сбрасываться в файл подкачки. »

Не совсем так "стоящие" процессы совсем неохотно вымещается из памяти, еще момент, могут "проснуться" самовольно. Все бы ни чего если бы их выгрузить, но в дело в новь вмешались старые добрые глюки (привет XP), не весть от куда взявшиеся. Не могу понять причину, точнее что влияет (до сего дня их не было). Может быть файл подкачки, который перестал быть непрерывным, после размещения на ssd образа виртуальной машины (6гб) и нескольких новых программ, второй подозреваемый - PrimoCache (уже был ранее уличен во вредительстве), 3 вариант - система, кстати, "sfc /scannow" выявил ошибки..

Iska 17-12-2019 03:08 2900828

Цитата:

Цитата vombat2
Не совсем так "стоящие" процессы совсем неохотно вымещается из памяти »

Охотно, не охотно… Их не спрашивают, вообще-то. Совсем.

Цитата:

Цитата vombat2
еще момент, могут "проснуться" самовольно. »

Не могут. Они не исполняются в данный момент. Они «заморожены». Понимаете? Не исполняется никакого их кода, который мог бы в теории их «пробудить». Только какой-либо иной процесс сие может делать.

vombat2 17-12-2019 06:01 2900842

Вложений: 1
Цитата:

Цитата Iska
Охотно, не охотно… Их не спрашивают, вообще-то. Совсем. »

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


Цитата:

Не могут. Они не исполняются в данный момент. Они «заморожены». Понимаете? Не исполняется никакого их кода, который мог бы в теории их «пробудить». Только какой-либо иной процесс сие может делать.
А кто их знает, можеть они как индийские йоги, которые сами входют и выходят из состояния "соммадхи"! :)

Iska 17-12-2019 17:15 2900930

Коллега, Вы можете верить во что угодно, дело Ваше. Что же до Руссиновича и «некоей отдельной области "модифицированной" памяти», то я лично предпочитаю этого: RAMMap - Windows Sysinternals | Microsoft Docs, этого: Troubleshooting with the Windows Sysinternals Tools - Mark E. Russinovich, Aaron Margosis - Google Книги, этого: Windows Sysinternals Administrator's Reference - Aaron Margosis, Mark E. Russinovich - Google Книги и этого: Windows Internals - Mark E. Russinovich, David A. Solomon, Alex Ionescu - Google Книги Руссиновича — тому.

vombat2 25-12-2019 14:23 2902113

Докумекал более-менее презентабельный вариант сей задумки. Подсказали на Руборде прожку EmptyStandbyList (от автора все того же Process Hacker'а), позволяющую выгружать все "workingsets" из памяти - не совсем то, но тоже пойдет для данного случая (EmptyStandbyList workingsets). Что в итоге - 2 скрипта (для засыпания и пробуждения юзера) и программки PsSuspend, EmptyStandbyList. Проги нужно закинуть в system32.
SuspendUser.bat
Код:

::Заморозка всех процессов текущего пользователя в текущей сессии, за исключением тех, которые могут вызвать глюки или тормоза (explorer, taskhost и т.д.)
for /f "tokens=2 delims=," %%a in ('tasklist/fi "USERNAME eq %username%" /fi "SESSIONNAME eq Console" /nh /fo csv^|findstr/i /v "explorer taskhost conhost cmd etd"') do pssuspend %%a
::Включение запланированной задачи "разморозки" процессов при разблокировке сеанса пользователя
SCHTASKS /Change /TN "Resume%username%" /enable
::Выход в "окно блокировки"
RunDll32 user32.dll,LockWorkStation
::Освобождение памяти
SCHTASKS /Run /TN EmptyWS

ResumeUser.bat
Код:

for /f "tokens=2 delims=," %%a in ('tasklist/fi "USERNAME eq %username%" /fi "sessionname eq console" /nh /fo csv^|findstr/i /v "explorer taskhost conhost cmd etd"') do pssuspend -r %%a
::Отключение запланирванной задачи "разморозки", чтобы не срабатывала в пустую
SCHTASKS /Change /TN "Resume%username%" /disable

Далее нужно создать задачу в планировщике задач под именем Resume"Имя пользователя", триггер - "при разблокировке рабочей станции", в действии указать скрипт ResumeUser.bat.
Затем нужно открыть планировщик (taskschd.msc) под админом, и создать там задачу под именем "EmptyWS", без триггеров, в действии указать "EmptyStandbyList.exe", параметр "workingsets". После нужно файлу этой задачи (в папке C:\Windows\System32\Tasks) в совйствах безопасности добавить доступ для группы "пользователи".
Задача "EmptyWS" нужна для запуска "EmptyStandbyList workingsets" с админскими правами под обычным пользвателем.
Далее выносим ярлык SuspendUser.bat на рабочий стол, запускать, лучше со свернутыми окнами.
У меня работает (на Win 8.1, Win7) почти без глюков, за исключением некоторых приложений. Автокад "падает" после таких манипуляций, хотя многие программы спокойно "засыпают" и "просыпаются" - браузеры, Google Earth, игра Dirt4..


Время: 10:04.

Время: 10:04.
© OSzone.net 2001-