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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 7 (http://forum.oszone.net/forumdisplay.php?f=95)
-   -   Утечка памяти(?) при работе с сетевым окружением. (http://forum.oszone.net/showthread.php?t=172059)

PsyDuck 02-04-2010 23:19 1383825

Утечка памяти(?) при работе с сетевым окружением.
 
Вложений: 1
Дано: Windows 7, копируем с нее данные (обычно происходит на крупных файлах) на какой-нибудь компьютер по сети, т.е. через сетевое окружение.
Через какое-то время что наблюдается: все начинает дико тупить, в диспетчере задач видно что занято много оперативки, на закладке "Процессы" всё как обычно, ничего криминального, а вот на вкладке "Быстродействие" творится нечто, половина или больше памяти занята. Помогает только перезагрузка.

starl 03-04-2010 12:00 1384069

а антивирь какой стоит?

PsyDuck 03-04-2010 13:03 1384104

Изначально Avast, но проверяли и без него, и на полностью чистой (только что установленной) системе (без софта, драйверов).

dmitryst 08-04-2010 01:44 1387577

в свойствах сетевой отключить flow control, receive side scaling, task offload. Проверить и отписаться, помогло или нет :)

Vancouver 08-04-2010 06:24 1387625

Отключить и по тестировать


Valeant 08-04-2010 14:59 1387968

Цитата:

wsimons,
Через какое-то время что наблюдается: все начинает дико тупить, в диспетчере задач видно что занято много оперативки, на закладке "Процессы" всё как обычно, ничего криминального, а вот на вкладке "Быстродействие" творится нечто, половина или больше памяти занята.
Нечего удивительного тут нет, процесс копирования идет через память она быстрее чем сеть, раз она доступна то ее и будем задействовать и в добавок использовать наверное большой кэш LargeSystemCache=1, так же IoPageLockLimit - Сколько памяти (в килобайтах) может заблокировать система под операцию ввода-вывода и т.д.

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

Цитата:

Mark Russinovich
Внутреннее устройство Vista SP1 – улучшения в части копирования файлов
...
Механизм копирования файлов в предыдущих версиях Windows
Механизм копирования файлов Windows нацелен на успешную работу в любых сценариях – настолько, насколько это вообще возможно, учитывая неизбежность компромиссных решений и нехватку значимой информации. До появления ОС Windows Vista механизм был тривиален. Исходный и конечный файлы открывались в режиме кэширования, затем исходный файл последовательно считывался фрагментами по 64 КБ (при создании сетевых копий вследствие ограничений по размеру блоков чтения, налагаемых протоколом SMB1.0, размер фрагмента уменьшался до 60 КБ), и эти фрагменты передавались в конечный файл. При доступе к файлу путем ввода-вывода с кэшированием (в отличие от ввода-вывода в режиме отображения в памяти и ввода-вывода без буферизации) данные, подлежащие чтению и записи, сохраняются в памяти как минимум до того момента, когда диспетчер памяти решит, что эта память нужна для других целей (в частности, для кэширования данных других файлов).
Асинхронное упреждающее чтение в ходе копирования производилось диспетчером кэша Windows. Пока исходный файл считывался в фоновом режиме, проводник записывал данные на другом диске или в удаленной системе. Посредством механизма записи с задержкой, реализованной диспетчером кэша, содержимое скопированного файла своевременно перемещалось из памяти на диск. Таким образом, при необходимости ресурсы памяти можно было направить на решение других задач, а в случае неисправности диска или сбоя системы ущерб от потери данных должен был быть минимальным.
...
Кроме того, механизм копирования инициирует четыре начальных блока ввода-вывода в размере от 128 КБ до 1 МБ (в зависимости от размера копируемого файла). После этого поток чтения с опережением диспетчера кэша начинает инициировать крупные операции ввода-вывода. Изменения, внесенные в платформу в ходе разработки пакета обновления 1 (SP1), касаются диспетчера кэша и позволяют ему обрабатывать более крупные операции ввода-вывода с помощью чтения с опережением и записи с задержкой. Укрупнение блоков ввода-вывода стало возможным лишь благодаря работе, проведенной при разработке первоначальной версии системы ввода-вывода ОС Windows Vista. Эта работа была направлена на поддержку блоков размером свыше 64 КБ и тем самым на снятие ограничения, характерного для предыдущих версий ОС Windows. Ввод-вывод большими блоками повышает производительность и при локальном копировании, так как сокращается частота обращений к диску и операций позиционирования головки. Кроме того, он помогает потоку записи с задержкой диспетчера кэша поспевать за скоростью заполнения памяти скопированными данными файлов. Это уменьшает, хотя и не исключает вероятность критической нехватки памяти, при которой активное содержимое памяти в ходе копирования уничтожается. Наконец, при удаленном копировании крупные блоки ввода-вывода позволяют драйверу SMB2 задействовать конвейерную обработку. Диспетчер кэша может инициировать блоки ввода-вывода на чтение, которые по размеру в два раза больше блоков, генерируемых приложениями – до 2 МБ в Windows Vista и до 16 МБ в Windows Server 2008. Блоки ввода-вывода на запись в Windows Vista могут достигать 1 МБ, а в Windows Server 2008 – 32 МБ.
...
К этому если еще добавить и нововведение в сетевом стеке - TCP Auto-Tuning и Compound TCP (CTCP), ECN Capability, RSS то действительно можно предположить несогласованности сетевых действий в передаче файлов с Windows 7 куда то например на windows xp.

Я бы посмотрел настройки сети.

PsyDuck 08-04-2010 19:51 1388195

Valeant, Проблема в другом. И после копирования память занята, причем не просто занята, а полностью.
Мало того, лично на моей машине (и другой еще) оный эффект выявить не получилось, а вот у друга (по проблеме у которого и пишу) это постоянно.

PsyDuck 08-04-2010 22:53 1388292

В общем попробовали все выше перечисленные способы, ничего не помогло:( Сетевухи - Marvel, если что.

Valeant 09-04-2010 08:26 1388499

Цитата:

wsimons,
Windows 7, копируем с нее данные (обычно происходит на крупных файлах) на какой-нибудь компьютер по сети, т.е. через сетевое окружение.
Через какое-то время что наблюдается: все начинает дико тупить, в диспетчере задач видно что занято много оперативки, на закладке "Процессы" всё как обычно, ничего криминального, а вот на вкладке "Быстродействие" творится нечто, половина или больше памяти занята.
Данный скрин не говорит о том что у вас проблемы как вы говорите "Утечка памяти". По данной программе трудно судить о доступности или свободности памяти. Я думаю у вас проблема в другом. Вам нужно определится с загруженными приложениями до и после возникновения ошибки. Например такой параметр у вас на скрине "Память ядра" - Выгружаемая 1271МБ наверное многовато.

И еще используете ли вы торренты или менеджеры закачек или P2P клиенты (даже если они не используются но загружены).

PsyDuck 09-04-2010 10:32 1388569

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

Valeant 09-04-2010 12:44 1388652

wsimons,
Ну хотябы используйте те встроенные средства которые есть в windows 7 для поиска причины.

Система спокойная

Копирование с ОС по сети на файл сервер

Копирование на ОС по P2P клиенту


С памятью все в порядке, но ведь на чистой системе то же стоят драйвера, и потом начните с того, что
"Память ядра" - Выгружаемая 1271МБ наверное многовато или при таких объемах так и должно быть?

PsyDuck 09-04-2010 13:46 1388691

На чистой ничего не ставим, вообще.
По поводу ядра и прочего, гляну сегодня как дома буду.
p.s. Скрины на каком-то стремном хостинге, полноэкранные картинки посмотреть нельзя, а если нажать "открыть" там сайт с вирусней:))

Vancouver 09-04-2010 15:19 1388765

Цитата:

Цитата wsimons
а если нажать "открыть" там сайт с вирусней) »

Нет этого, косвенный ответ на ваш вопрос. :)

PsyDuck 09-04-2010 15:25 1388774

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

Valeant 09-04-2010 15:58 1388808

Цитата:

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

wsimons,
Да суть и не в картинках. На них просто показано что при нулевой свободной памяти или как вы говорите
Цитата:

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

"Процессы" всё как обычно, ничего криминального

PsyDuck 09-04-2010 16:23 1388836

Такое ощущение, что вы не понимаете в чем суть моего вопроса. Вопрос-то и в системе как раз. Я и хочу это понять, что именно там не так.
И еще раз, для тех, кто не видит что я пишу - Компьютер не работает НОРМАЛЬНО, он в процессее и после копирования жудко тупит.
Причем сначала начинает копировать данные на удаленную машину вполне нормально, а через какое-то время (допустим перенесли 4гб из 10) начинается свистопляска.

Valeant 09-04-2010 16:36 1388849

wsimons,
А как можно вас понять если
Цитата:

"Процессы" всё как обычно, ничего криминального, а вот на вкладке "Быстродействие" творится нечто, половина или больше памяти занята.
По данной вкладке вообще нечего не понять, кроме зеленых циферек 3,9Gb

Ну посмотрите в "мониторе ресурсов" хотя бы, за тем что происходит в ПК после запуска мин 10 не трогая, потом копируя маленький файл (500-1000Mb) что происходит, что из программ запущенно, если запустить кучу программ как поведет себя ПК, какая у вас windows (64bit). Для того чтоб "жутко тупить" процессору ему надо на что-то отвлекаться либо на 100% либо "зависнуть" при обслуживании драйверов или служб на долгое время.

Вопрос скорей всего не в системе, а в том что у вас стоит на ней из установленных вами ПО и драйверов, вы про это вообще молчите.

PsyDuck 09-04-2010 16:42 1388858

Вот именно что все хорошо, но с какого-то занято 3.9гб:) А если бы мы подождали еще минут 10, уже было бы занято 5.5, а в итоге было бы занято 7 с чем-то, комп бы дико тупил, причем в диспетчере так-же ничего криминального, т.е. загруженность процессора 1% и тд и тп. Это вот меня и беспокоит более всего. ПО точно никакого, из драйверов только сетевые. Т.е. те, которые стоят - встали по дефолту после установки системы. Я понимаю, что чудес не бывает, но тем не менее что-то где-то не так, и в итоге имеется такой вот момент интересный. Хотя я с ним сталкиваюсь впервые, и на моей личной машине такого не происходит.

dmitryst 09-04-2010 16:43 1388859

Цитата:

Цитата Valeant
Вопрос скорей всего не в системе, »

ну почему же, процессор отвлекается и на обслуживание прерываний, которые (насколько мне известно) НЕ отображаются в диспетчере задач. Т.е. грузить процессор может и неисправная сетевая, посылая процессору не 5000, а 500 000 прерываний в секунду :). Я б сменил (временно) сетевую, на нормальную модель от интела или 3ком-а.

PsyDuck 09-04-2010 16:47 1388867

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

Valeant 09-04-2010 21:00 1389038

Это не серьезно про сетевую с
Цитата:

посылая процессору не 5000, а 500 000 прерываний в секунду
Не вдаваясь в работу сетевой карты и описания работы прерываний скажу только одно
10Мбит = 14800п/s, 100Mбит = 148000п/s только учтите что пакеты бываю и маленькие от 60байт до 1500байт (но работа идет в обе стороны - получил данные (проверка контрольных сумм) и подтверждение полученных данных), и есть буфер на сетевой карте (может до 1Mb) через который происходит работа с сетью, и если он будет заполнен, то приход любого следующего пакета затрет данные в буфере, что влечет за собой повтор передачи, поэтому существуют алгоритмы которые это контролируют протоколы и т.д. за всем этим следит ОС. Не говоря о приоритетах по прерываниям и по обслуживанию их диспетчером ОС, который может менять все это --- Описания работы ядра Windows Vista на данном сайте.
Та же забыл упомянуть про режим DMA в данном случае, что так же имеет место быть.

А теперь вопрос про память - причем тут сетевая при якобы расходе памяти?

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

PsyDuck 09-04-2010 21:10 1389041

Valeant,
Я специально не стал такой скрин делать, ибо там все хорошо, т.е. все процессы кушают памяти и процессорного времени столько сколько обычно:( Т.е. вся проблема проявляется только в диких тормозах, а так -же в индикаторе занятой памяти.

Valeant 09-04-2010 21:12 1389043

Ладно удачи, вам в смене сетевой.

dmitryst 09-04-2010 21:13 1389044

Цитата:

Цитата Valeant
режим DMA в данном случае, что так же имеет место быть. »

это вроде как доступ к памяти, и память не при чём. Чудеса программирования, однако. Сидите и смотрите
Цитата:

Цитата Valeant
монитор ресурсов »


Valeant 10-04-2010 07:38 1389223

dmitryst,
Ну вы что на самом деле

Цитата:

Direct Cache Access (DCA)
Windows 7 and 2008 Server (but not Vista) add NETDMA 2.0 (Network Direct Memory Access) Direct cache access support. Direct Cache Access (DCA) allows a capable I/O device, such as a network controller, to deliver data directly into a CPU cache. The objective of DCA is to reduce memory latency and the memory bandwidth requirement in high bandwidth (Gigabit) environments. DCA requires support from the I/O device, system chipset, and CPUs.

To enable DCA:

netsh int tcp set global dca=enabled

Available states are: enabled, disabled.
Default state: disabled
Recommended: enabled (provided the CPU/MoBo/NIC support it)

It is also possible to enable this setting by editing the Windows Registry instead of using netsh as follows:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
EnableDCA=1 (DWORD, entry does not exist by default. Set to 1 to enable, 0 to disable)
NetDMA это использование механизма DMA (аналогично работе винчестеров) для обмена информацией между сетевым адаптером и основной памятью вместо использования цетрального процессора и его прерываний.

Для ознакомления вас dmitryst, с информацией http://msdn.microsoft.com/en-us/libr...47(VS.85).aspx


Время: 08:45.

Время: 08:45.
© OSzone.net 2001-