[identity profile] lynx-rousse.livejournal.com posting in [community profile] useful_faq
Есть windows 8.1 Pro x64, есть 16 Гб оперативной памяти. Внимание, вопрос: как заставить запускаемые приложения использовать оперативную память, а не жёсткий диск? Т.е. загружаться туда полностью?
Пример: в uTorrent выставленны настройки на сброс больших кусков памяти на жёсткий диск, часто используемые куски должны быть в оперативе. По факту на загрузке со скоростью 2Мб/с обращние к диску в сумме на 17,5 Мб/с.
Гуглить пытались, Гугл не помог, всем бы наоборот...

Date: 2013-11-02 06:38 pm (UTC)
From: [identity profile] dims12.livejournal.com
16-битные приложения не могут загружать более 2Гб ОЗУ.

Date: 2013-11-02 06:48 pm (UTC)
From: [identity profile] shark-ru.livejournal.com
В 64-битной Windows отсутсвует поддержка 16-битных приложений. Так что они ничего не могут использовать.

Date: 2013-11-02 06:57 pm (UTC)
From: [identity profile] dims12.livejournal.com
Да, я опечатался, имел в виду 32-битные.

Date: 2013-11-02 07:10 pm (UTC)
From: [identity profile] shark-ru.livejournal.com
32-битным приложениям в WOW64 можут быть доступны почти все 4 ГБ виртуального адресного пространства.
Не всем автоматом. Но могут.

Date: 2013-11-02 07:12 pm (UTC)
From: [identity profile] dims12.livejournal.com
Вопрос был задан не про виртуальное адресное пространство.

Date: 2013-11-02 07:26 pm (UTC)
From: [identity profile] shark-ru.livejournal.com
А вы задавали какой-то вопрос?

Date: 2013-11-02 07:06 pm (UTC)
From: [identity profile] dims12.livejournal.com
А сколько загружают, дайте скриншот.

Date: 2013-11-02 07:02 pm (UTC)
From: [identity profile] shark-ru.livejournal.com
Программы пользовательского режима в Windows не "загружаются в ОЗУ" и их нельзя заставить "не использовать диск". Когда же до вас всех это наконец дойдёт.

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

> Пример: в uTorrent выставленны настройки на сброс больших кусков памяти на жёсткий диск, часто используемые куски должны быть в оперативе.

Приложение пользовательского режима не имеет никакой возможности определять физическое расположение "кусков". Приложение всегда работает с ВИРТУАЛЬНОЙ памятью. Запомните это раз и навсегда.

> По факту на загрузке со скоростью 2Мб/с обращние к диску в сумме на 17,5 Мб/с.

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

Date: 2013-11-02 08:22 pm (UTC)
From: [identity profile] shark-ru.livejournal.com
Система многозадачная. Физическая памать -- общий ресурс. Никак невозможно дать программе возможность монополизировать общий ресурс, потому что тогда каждая программа решит, что она самая умная и это ей нужнее всего. Результатом будет невозможность работы вообще никаких программ. Поэтому никакой возможности монополизировать ресурс программам просто-напрсто не дано. По-моему, очевидная логика, но регулярно кто-то хочет получить возможность выстрелить себе в ногу.
Успокойтесь. Планировщик ОС достаточно хорошо распределяет ресурсы между работающими программами.

А вот приложения, которые хотят перехитрить ОС, могут доставлять неприятностей.
Я, например, поняблюдал за uTorrent при помощи монитора ресурсов. Прикол в том, что он создаёт меньше нагрузки на диск, если у него поотключать в настройках всё его "кэширование".

У вас не получится перехитрить системный планировщик.

Date: 2013-11-03 10:05 am (UTC)
From: [identity profile] ohshitnotuagain.livejournal.com
Эээ а всякие там приоритеты процессов? Если я хочу вот прямо сейчас выполнять одну задачу максимально эффективно, я не могу позволить его монополизировать все ресурсы?

Хреново тот планировщик работает, то и дело наблюдаю ту самую монополизацию, только уже мной не санкионированную - всякие там инсталляторы могут 8 гигов оперативы выжрать как нехрен делать.

Date: 2013-11-03 06:44 pm (UTC)
From: [identity profile] shark-ru.livejournal.com
> Эээ а всякие там приоритеты процессов?

Приоритеты относительны. Задача переднего плана имеет приоритет больше, фоновая задача -- меньший, задача, выходящая с фона на передний план получает на некоторое время priority boost. Периодически устраивается раздача слонов для голодающих потоков низких приоритетов.

> Если я хочу вот прямо сейчас выполнять одну задачу максимально эффективно, я не могу позволить его монополизировать все ресурсы?

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

Если вы хотите монопольного владения ресурсами, то используйте однозадачную ОС.

> Хреново тот планировщик работает, то и дело наблюдаю ту самую монополизацию, только уже мной не санкионированную - всякие там инсталляторы могут 8 гигов оперативы выжрать как нехрен делать.

Выжрать -- это сколько угодно. Монополизации тут не происходит, жадина страдает не меньше всех остальных.
Ну и, конечно, "оперативы" никто выжрать не может. Выжрать можно только виртуальную память.
Edited Date: 2013-11-03 06:47 pm (UTC)

Date: 2013-11-03 06:56 pm (UTC)
From: [identity profile] ohshitnotuagain.livejournal.com
А однозадачные это какие? Они находят сейчас применение?

Date: 2013-11-03 08:09 pm (UTC)
From: [identity profile] shark-ru.livejournal.com
Ну вот ДОС, например, живее всех живых.
Находят в некоторых спецслучаях применение.

Date: 2013-11-04 09:25 am (UTC)
From: [identity profile] xytop.livejournal.com
вот вам список (http://ru.wikipedia.org/wiki/%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%80%D0%B5%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8#.D0.9E.D0.BF.D0.B5.D1.80.D0.B0.D1.86.D0.B8.D0.BE.D0.BD.D0.BD.D1.8B.D0.B5_.D1.81.D0.B8.D1.81.D1.82.D0.B5.D0.BC.D1.8B_.D1.80.D0.B5.D0.B0.D0.BB.D1.8C.D0.BD.D0.BE.D0.B3.D0.BE_.D0.B2.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D0.B8_.28.D1.81.D0.BF.D0.B8.D1.81.D0.BE.D0.BA.29) таких ос.

Date: 2013-11-02 07:16 pm (UTC)
From: [identity profile] yalexey.livejournal.com
Если приложение устроено так, чтобы работать с HDD, то единственный способ заставить его гарантированно не использовать HDD - создать виртуальный диск и назначить ввод/ввод туда.

Если мы будем для примера рассматривать uTorrent, то в нём есть настройки размеров собственного кеша и использования системного кеша. (Приложения могут контролировать состоялась ли фактическая запись на накопитель, или данные ожидают записи в системном кеше). Если мы включаем системный кеш на запись для торрента, то до тех пор, пока вся память не будет забита данными, фактическая запись на диск будет производиться в фоновом факультативном режиме. Так, чтобы не мешать всем остальным процессам.
Такой режим использования оперативной памяти появился начиная с вин7. Теперь винды, как линукс, всю не занятую для работы приложений память используют для отображения дискового пространства. Естественно, той части пространства, которая уже использовалась, или будет использована для ввода/вывода в ближайшее время.

Date: 2013-11-02 07:25 pm (UTC)
From: [identity profile] yalexey.livejournal.com
По факту на загрузке со скоростью 2Мб/с обращние к диску в сумме на 17,5 Мб/с.
Эта цифра, очевидно, считает объём дисковых операций приложения. Большинство этих операций в реальной жизни происходят между приложением и системным кешем, а не с физическим накопителем.

нет системного кэша.
А Вы включали его использование? Если мне не изменяет с кем-то память, системный кеш по умолчанию отключён в µTorrent. Сделано это, очевидно, для того, чтобы предотвратить потерю "бесконечно ценных" уже загруженных данных при сбое по питанию.

Date: 2013-11-02 07:57 pm (UTC)
From: [identity profile] yalexey.livejournal.com
Системный кэш не включали.....

Date: 2013-11-02 07:59 pm (UTC)
From: [identity profile] yalexey.livejournal.com
Yep

Если основная проблема в торренте, то Вам сюда (http://forum.utorrent.com/viewtopic.php?id=131760).

Многие программы считают, что лучше всех знают, как общаться с диском. Это печально, но кроме аппаратного кеширующего контроллера нет простых решений противодействия таким программам. Даже SSD не решает полностью проблемы массового ввода-вывода, порождённого криворукотью программистов.
Edited Date: 2013-11-02 08:15 pm (UTC)

Date: 2013-11-02 08:24 pm (UTC)
From: [identity profile] yalexey.livejournal.com
Есть старое хорошее правило - разносить программы (систему) и обрабатываемые этими программами данные на разные физические шпиндели. В принципе, для SSD это правило уже менее актуально, если человек может позволить себе всё хранить на SSD.

Но даже если система и программы лежат отдельно от данных на своём HDD, всё равно без правильной дефрагментации там наступит задница, если использовано больше половины объёма накопителя.

Date: 2013-11-02 08:28 pm (UTC)
From: [identity profile] shark-ru.livejournal.com
20 Мб/с -- это, вообще говоря, суровая нагрузка на диск, учитывая, что теоретический предел для дисков имеет порядок величин 50--100 Мб/с

Date: 2013-11-02 08:35 pm (UTC)
From: [identity profile] shark-ru.livejournal.com
У вас очень хороший интернет ;)

Date: 2013-11-02 08:55 pm (UTC)
From: [identity profile] aresh.livejournal.com
При линейном доступе - вполне нормальная нагрузка.. вот только скачивание торрентов - нифига не линейный доступ :)

Date: 2013-11-02 09:42 pm (UTC)
From: [identity profile] yalexey.livejournal.com
Он будет почти линейным, если тот же µTorrent будет использовать 500 мегабайт своего собственного кеша, вместо 32.

Date: 2013-11-02 10:00 pm (UTC)
From: [identity profile] aresh.livejournal.com
Сферический идеальный конь в вакууме :)
Если мюторрент ничего не раздаёт и последовательно качает один фильм за раз и его кэш настроить именно на приоритетное выполнение именно этой задачи и диск не фрагментирован и системное кэширование вырублено - то можно и приблизить к линейному, да.
А так, вообще то, сидерам тоже кэш нужен.. и там задача немного другая :)
Дайте мюторренту 500М и попробуйте качать не раздавая.. я просто не пробовал. На моих скоростях и при одновременной раздаче и вчетверо меньше хватает.

Date: 2013-11-02 10:10 pm (UTC)
From: [identity profile] yalexey.livejournal.com
Задача раздачи принципиально иная. Это типично серверная нагрузка. Rtorrent или Deluge под линуксом красиво справляются с загрузкой 100 Мб канала даже при использовании зелёных медленых винтов. Но при наличии 8++ гигабайт памяти.

Date: 2013-11-02 10:19 pm (UTC)
From: [identity profile] aresh.livejournal.com
Ну, насколько я понимаю тактику мюторрента, он всё таки посматривает и на общий объём системной памяти, особо лишнего не жрёт. Самые большие проблемы с ним я видел, когда его пытался в реалтайме антивирус контролировать.. вот тут начинались конкретные тормоза и разогрев процессора :)

У меня раздача 25 мегабит и древний сата-1 винт (специально под торренты выделенный). 60 мегабайт кэша на раздачу где-то уходит. 128 метров в настройках прописано всего, туда он лезет уже когда и параллельная закачка идёт.

Date: 2013-11-04 12:04 pm (UTC)
From: [identity profile] ikaktys.livejournal.com
17.5 вполне еще не плохо, когда к HDD идет параллельно доступ из кучи программ, оно обычно падает еще сильнее, до 2-6Mb/s, когда 4+ проги одновременно пишут и читают, или даже одна, но такая как торрент-клиент пишет сразу в кучу разных файлов на разных местах и головки диска либо тратят время на метание по всему диску либо дополнительно ждут пока диск докрутится до нужного сектора.
Выход как сказали - либо RAM-диск, либо SSD, либо RAID контроллер с толстым кешем и с батарейкой что бы данные не потерялись.

Date: 2013-11-02 07:55 pm (UTC)
From: [identity profile] aresh.livejournal.com
Не понял. Вы загружаете или раздаёте? Если загружаете - откуда часто используемые куски?
Если раздаёте - размер кэша в мюторренте устаканивается приблизительно через минуту после последнего резкого изменения у меня. Идеальная загрузка кэша, насколько я понимаю, получается около скорости раздачи, помноженной на 60 сек. Поскольку торрентов у меня сильно больше одного, то идеальной она никогда не бывает, где-то процентов 40% на практике.

Date: 2013-11-02 08:12 pm (UTC)
From: [identity profile] aresh.livejournal.com
Мюторрент использует свой кэш и его хоть как-то можно заставить жрать память больше или меньше.. :) Заставить виндовс жрать больше памяти - это вряд ли. Про восьмёрку не скажу, но в NT4-XP есть режимы - "больше памяти юзерским приложениям-меньше кэшу" или наоборот. Руссинович и компания в своё время баловались, также, недокументированными функциями для задания размера кэша. Какой то эффект от этого есть, но довольно незначительный, что, впрочем, и логично - нельзя позволять пользователю так запросто грохнуть систему :)

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

Date: 2013-11-02 08:19 pm (UTC)
From: [identity profile] aresh.livejournal.com
http://ru.wikipedia.org/wiki/RAM_drive

Date: 2013-11-02 08:28 pm (UTC)
From: [identity profile] aresh.livejournal.com
Что именно есть в TC? В нативном есть только свой кэш для копирования..

Date: 2013-11-02 09:42 pm (UTC)
From: [identity profile] http://users.livejournal.com/_biker_/
Ответ (почти точный) был дан вам первым каментом.
В оперативку полностью залезет только 64-битное приложение.
Но ежели оно 32-х битное, то будет использовать только 3652 MB и не более.

Date: 2013-11-04 12:11 pm (UTC)
From: [identity profile] ikaktys.livejournal.com
не тот ответ, буферизация диска операционкой делается самостоятельно всегда (Win 7 - 8.1) вне зависимости от битности программы, но только на чтение, на запись буферизации практически нет, иначе велика опасность потери данных.

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

Date: 2013-11-03 12:10 am (UTC)
From: [identity profile] sweethomeabroad.livejournal.com
Создать виртуальный диск в памяти, запихнуть нужные приложения туда (лучше, если это будут portable-версии). tmp и прочие временные- переназначить на этот виртуальный диск.

Date: 2013-11-04 01:52 pm (UTC)
From: [identity profile] falsche-jade.livejournal.com
В никсах есть ряд линуксов заточенных именно под это, например
http://puppylinux.org/main/Overview%20and%20Getting%20Started.htm

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