powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Способы борьбы с фрагментацией памяти
65 сообщений из 65, показаны все 3 страниц
Способы борьбы с фрагментацией памяти
    #40085168
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня,

10.4.1, х32
большая программа состоящая из множества модулей (dll, ocx и проч) по отзывам клиентов через несколько часов работы замедляется. Причём не только сама замедляется, замедляет также остальные программы запущенные на этом PC. Даже если нагрузка на процессор небольшая и количество свободной памяти достаточное.
Если программу закрыть и открыть снова скорость восстанавливается. В процессе выяснения причин подозрение пало на фрагментацию памяти.
Соотв. возникло несколько вопросов.
1. Как это проверить? Есть ли какие средства позволяшщие оценит степень фрагментации памяти?
2. Как с этим бороться? Возможно ли в фоне проводить дефрагментацию памяти? Возможно изменить настройки менеджера памяти? Выполнить какие другие действия....
По утверждениям тех же клиентов ещё пару лет назад такой проблемы не наблюдалось. У эбаркадеры что то кардинально менялось в направлении работы с памятью последние несколько лет?

Спасибо за любые советы и ссылки.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085174
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun,

Это у вас скорее всего не с памятью проблемы, а с утечкой ресурсов: GDI-объекты, дескрипторы и пр.

Обычно в этом случае ОС начинает хорошо так лагать. Выделение этих объектов можно посмотреть в стандартном диспетчере задач.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085175
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
В процессе выяснения причин подозрение пало на фрагментацию памяти.

Пальценебным методом, я полагаю? Было бы интересно хотя бы услышать ответ на вопрос - какой памяти.

hlopotun
По утверждениям тех же клиентов ещё пару лет назад такой проблемы не наблюдалось.

А они за последние пару лет, случаем, десятку не обновляли?
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085180
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun,

самый простой способ избавиться от накапливаемых ошибок - это вынести проблемный код в отдельный процесс, который можно периодически прибивать и перезапускать
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085181
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Фрагментация влияет, только если размещать большие куски зараз (в ОП не найдется непрерывного куска - уйдет в своп), или мега-производительно бегать по массивам (кеши процессора, вот это все). Остальное будет незаметно. Так что смотреть загрузку ОП и свопа, а потом идти хэндлы проверять
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085191
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zelius
самый простой способ избавиться от накапливаемых ошибок - это вынести проблемный код в отдельный процесс, который можно периодически прибивать и перезапускать


плавно переходим к теме "Микросервисная архитектура приложений на Delphi"
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085205
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"Узнай автора по названию темы".
Очередной бессмысленный топик.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085210
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun

1. Как это проверить? Есть ли какие средства позволяшщие оценит степень фрагментации памяти?

rammap

hlopotun

2. Как с этим бороться? Возможно ли в фоне проводить дефрагментацию памяти? Возможно изменить настройки менеджера памяти? Выполнить какие другие действия....

Переход на Win64 решает большинство проблем.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085226
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис
Переход на Win64 решает большинство проблем.
как? если прога 32 бит.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085230
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter,
прогу переделать под Win64, вестимо, вместе со всей требухой.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085247
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Бориспрогу переделать под Win64

Некому.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085252
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Непонятно как фрагментация может вызывать замедление. Выделение памяти может произойти или не произойти по причине её отсутствия. А вот если очереди выстроились к какому-то ресурсу, то да. Пулу соединений к БД, например.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085258
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter
Непонятно как фрагментация может вызывать замедление. Выделение памяти может произойти или не произойти по причине её отсутствия.


Менеджеру памяти (МП) нужно как-то найти кусок памяти, который он выделит - а у него есть список (а то и несколько) освобожденных кусков, которые он может объединять, если они соседние и пр.
Логика работы МП - тема для долгих бесед, некоторое замедление конкретного приложения он может вызвать, но тормозить всю систему - сомнительно.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085272
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я в этом году сталкивался с фрагментацией стандартного ММ в D2007.
При каждой операции синхронизации справочников утекало порядка 50Кб. Делал порядка 100 операций и каждый раз память увеличилась на 50 Кб, в коде ошибок не было, поэтому сделал вывод что это фрагментация. Проблема решилась после переноса вызова метода Free для одного из объектов на несколько строк выше.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085283
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DmSer
Я в этом году сталкивался с фрагментацией стандартного ММ в D2007.
При каждой операции синхронизации справочников утекало порядка 50Кб. Делал порядка 100 операций и каждый раз память увеличилась на 50 Кб, в коде ошибок не было, поэтому сделал вывод что это фрагментация. Проблема решилась после переноса вызова метода Free для одного из объектов на несколько строк выше.


тут так просто всё не будет.
Огромная программа которая уже более 25 лет растёт, не один десяток программистов приложили руку. Одних только самописных фреймворков несколько штук, есть модули из delphi 5 без исходников, мегатонны кода. Всё это работает и запускается в рамках одного х32 приложения.Взять это и одним махом перенести на х64 не получится. Слишком большой объём работ. Для начала надо разобраться, действительно ли фрагментация причина или как выше написали не освобождение ресурсов или ещё что. Как только это не освобождение может влиять на сторонние программы если памяти достаточно и процессора не нагружены (по меньшей мере так выглядит в менеджере задач винды). Разбираться надо короче.
Для начала хорошо бы какую статью почитать с разбором поиска подобных проблемм. И какие инструменты и методики лучше использовать при этом разборе. Например, есть ли вообще вожможность визуализировать фрагментацию памяти и её заполнение.

Спасибо всем за участие.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085286
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fr0sT-Brutal
Фрагментация влияет, только если размещать большие куски зараз (в ОП не найдется непрерывного куска - уйдет в своп), или мега-производительно бегать по массивам (кеши процессора, вот это все). Остальное будет незаметно. Так что смотреть загрузку ОП и свопа, а потом идти хэндлы проверять


тут как раз наверное случай с самописными датасетами/массивами которые работают и с paradox и с firebird и тащат всё сразу в память.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085296
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот нашел у мелкомягких софтину RamMap .
Хоть фрагментацию и не показывает но карту памяти строит.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085302
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hlopotun
Как только это не освобождение может влиять на сторонние программы если памяти достаточно и процессора не нагружены (по меньшей мере так выглядит в менеджере задач винды). Разбираться надо короче.

Если памяти достаточно, то не в фрагменатции дело, кмк. Смотри на хэндлы.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085310
swame2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hlopotun,

Не факт, что это фрагментация памяти.
Я бы все-таки начал с исследования производительности профайлером.
Может программа тормозит при вызове каких то внешних процессов или ресурсов, тогда большой загрузки процессор не покажет.
А профайлер покажет.
Может растут какие то списки и идет поиск перебором в них (но тогда процессор покажет увеличение загрузки).
Я пользуюсь профайлером https://www.prodelphi.de.
Ну а чтобы мониторить это все на постоянной основе - логирование времени выполнения всех кусков кода при превышении лимита времени выполнения, от крупных к мелким.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085317
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слон в комнате:
hlopotun
Причём не только сама замедляется, замедляет также остальные программы запущенные на этом PC.


Память в программах виртуальна ужо больше 25 лет. Никаким макаром память в вашей программе не может влиять на ядро или другие программы.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085319
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunSmoker
Слон в комнате:
hlopotun
Причём не только сама замедляется, замедляет также остальные программы запущенные на этом PC.


Память в программах виртуальна ужо больше 25 лет. Никаким макаром память в вашей программе не может влиять на ядро или другие программы.
Да запросто! "Отберите" у приложений их рабочие наборы и они прекрасно все вместе будут их подгружать заново и тормозить всю систему.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085320
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо смотреть, что вообще творится с памятью. Сколько физической. Какие операции с ней производятся. Может тупо система не успевает отдавать "обнуленные" страницы.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085324
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GunSmoker
Слон в комнате:
hlopotun
Причём не только сама замедляется, замедляет также остальные программы запущенные на этом PC.


Память в программах виртуальна ужо больше 25 лет. Никаким макаром память в вашей программе не может влиять на ядро или другие программы.


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

Спасибо.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085327
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на просторах сети нащел интересную книгу и тут обзорное https://www.youtube.com/watch?v=_0_cUcygmLU
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085329
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
Фрагментация организованная одним приложением мешает выделять цельные блоки другому приложению

GunSmoker
Память в программах виртуальна ужо больше 25 лет. Никаким макаром память в вашей программе не может влиять на ядро или другие программы.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085331
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и того же автора сохраню тут ссылку на книгу "Delphi. Event-based and asynchronous programming" дабы не потерять самому.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085333
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_
hlopotun
Фрагментация организованная одним приложением мешает выделять цельные блоки другому приложению

GunSmoker
Память в программах виртуальна ужо больше 25 лет. Никаким макаром память в вашей программе не может влиять на ядро или другие программы.


получается виртуализация избавляет нас от фрагментации памяти одним приложением для другого?
просто хочу понять.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085344
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а дефрагментаторы не пробовал?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085356
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий

а дефрагментаторы не пробовал?
Мертвому припарка. Сами разработчики ОСи не рекомендуют.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085362
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
22.07.2021 12:32, Barmaley57 пишет:
> Мертвому припарка. Сами разработчики ОСи не рекомендуют.

скучный ты человек. нет в тебе романтики... ©
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085363
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий, се ля ви)
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085371
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barmaley57Надо смотреть, что вообще творится с памятью. Сколько физической. Какие операции с ней
производятся.

Ну, вы ещё его спросите "зачем в процедуре импорта данных в БД используется OCX"...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085394
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
получается виртуализация избавляет нас от фрагментации памяти одним приложением для другого?
просто хочу понять.
Память у каждого процесса своя. И нужно приложить большие усилия, чтобы из одного процесса повлиять на память в другом процессе
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085407
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в некоторых местах уже нахожу проблемы. Например маски удерживаюшие большие массивы данных не закрываются а просто скрываются (в последующем для более быстрого открытия). Сейчас удалось спровоцировать ситуацию когда скрытая маска продолжала удерживать больще 1го гигабайта данных.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085411
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
22.07.2021 13:29, _Vasilisk_ пишет:
> Память у каждого процесса своя. И нужно приложить большие усилия, чтобы из одного процесса повлиять на память в другом процессе

добавлю:
пейджинг встроен в архитектуру процессора.
"влезть" в память чужого процесса без обращения к весьма специфическим функциям ядра ОСи физически невозможно.
и функции эти требуют эскалации прав.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085415
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_
Память у каждого процесса своя. И нужно приложить большие усилия, чтобы из одного процесса повлиять на память в другом процессе

Тебе ж описали сценарий, когда влияние не на память, а на производительность возможно. Вполне вероятный, как по мне
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085420
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal
Тебе ж описали сценарий, когда влияние не на память, а на производительность возможно. Вполне вероятный, как по мне

Вопрос в том, что решающее влияние на это "фрагментации памяти" вообще и дельфового менеджера памяти в частности - крайне маловероятно.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085425
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal
Тебе ж описали сценарий, когда влияние не на память, а на производительность возможно
А теперь читаем по буквам
_Vasilisk_
Память у каждого процесса своя. И нужно приложить большие усилия, чтобы из одного процесса повлиять на память в другом процессе
показываем мне слово "производительность"
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085431
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Держите файлик.
Настраиваем под свое окружение.
Запускаем n копий, пока не станет совсем худо.
Следим в Process Explorer за показателями Process Memory -> Page Faults + PF Delta
Переключаемся на другие приложения (почтовик, хром и т.д.) и активно работаем в них.
У кого SSD - будет сильно легче. Кто на HDD - будет тяжело.
Казалось бы: память виртуальная и изолированная по процессам. Но подкачку то никто не отменял. Поэтому одно гадкое приложение может солить всей системе.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085432
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
22.07.2021 15:08, Barmaley57 пишет:
> Поэтому одно гадкое приложение может солить всей системе.

на каком железе?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085433
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий

22.07.2021 15:08, Barmaley57 пишет:
> Поэтому одно гадкое приложение может солить всей системе.

на каком железе?
Теоретически - на любом
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085435
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот только у аффтара 32-х разрядное приложение, запускаемое в одном экземпляре. Оно чисто
технически никого кроме себя в своп не загонит.

Аффтар ищет под фонарём. Бессмысленно ему в этом помогать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085440
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но автор не озвучил конфигурации и загруженность машин, которые тормозят. Так что шанс еще есть!
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085442
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
22.07.2021 15:37, Barmaley57 пишет:
>
> Но автор не озвучил конфигурации и загруженность машин, которые тормозят.
> Так что шанс еще есть!

это зависит от того, на что именно вы надеетесь... ©
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085443
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

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

Аффтар ищет под фонарём. Бессмысленно ему в этом помогать.

да, только вот результат работы этой функции:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
function _CurrentProcessMemory: Cardinal;
  var
    MemCounters: TProcessMemoryCounters;
  begin
    MemCounters.cb := SizeOf(MemCounters);
    if GetProcessMemoryInfo(GetCurrentProcess,
        @MemCounters,
        SizeOf(MemCounters)) then
      Result := MemCounters.WorkingSetSize + MemCounters.PagefileUsage
    else
      RaiseLastOSError;
  end;


выдаёт промежуточные значения далеко выходяшие за 2 (или если танцевать 3) гигабайта в рамках одного х32 приложения. А точнее доводил и до 6 гигов, далее просто не проверял.
Я потому ранее и задавал вопрос по использованию памяти разными модулями, например в ехе и ocx который этот ехе использует. Делят они общие 2гига основного приложения или у каждого свои 2 гига есть.
В этой функции ещё PageFile суммируется. Значит ли это что ограничение 2/3 гига это ограничение только физической памяти а с учётом своппинга общий объём виртуальной памяти может выходить за эти 2/3 гига в рамках одного приложения ?
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085445
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Barmaley57
Но автор не озвучил конфигурации и загруженность машин, которые тормозят. Так что шанс еще есть!

там такой зоопарк, от старого хлама и всяких synology disk station и до нормальных серверов. Уже писал, больше 2000 разношерстных и разноразмерных клиентов. И на производительность понятно тянут единицы. Но это не значит что проблему можно игнорировать.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085447
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotunВ этой функции ещё PageFile суммируется

А чего ж ты ограничился всего двумя полями-то? Взялся суммировать - суммируй всё, что есть
в TProcessMemoryCounters...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085449
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
22.07.2021 15:47, hlopotun пишет:
> например в ехе и ocx который этот ехе использует. Делят они общие 2гига основного приложения или у каждого свои 2 гига есть.

ну нельзя же так! надо же хоть буквари освоить.
память выделяется ПРОЦЕССУ.
возьми уже таки в руки ProcessExplorer.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085450
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

hlopotunВ этой функции ещё PageFile суммируется

А чего ж ты ограничился всего двумя полями-то? Взялся суммировать - суммируй всё, что есть
в TProcessMemoryCounters...


ну предложите свой вариант этой функции. Из обсуждения тут я так понял этого достаточно.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085451
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Вот только у аффтара 32-х разрядное приложение, запускаемое в одном экземпляре. Оно чисто технически никого кроме себя в своп не загонит.
Чисто технически - может.
Если запросит больше памяти чем физически свободной - винда начтет свопировать процессы с более низким приоритетом.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085454
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
с учётом своппинга общий объём виртуальной памяти может выходить за эти 2/3 гига в рамках одного приложения?
Нет!
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085457
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хрен найдешь в интернет-помойке нормальную ссылку, но хотя бы так
Ну если совсем в буквари - то это к Руссиновичу и ко со "внутренним устройством виндоус" или что-нибудь по ассемблеру Зубкова.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085483
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotunя так понял этого достаточно.

Нет. К результатам этой функции должен прилагаться программист, который не станет
смешивать Working Set и Page File.

RTFM: https://docs.microsoft.com/en-us/windows/win32/psapi/process-memory-usage-information
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085500
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
Из обсуждения тут я так понял этого достаточно.
И где там что суммируется?
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085506
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_
hlopotun
Из обсуждения тут я так понял этого достаточно.
И где там что суммируется?

ciuly Oct 24 '13 at 14:48besides the above, this method shows the amount of memory allocated by the application, not the amount of memory used by it (like memory allocated by 3rd party dlls, ocx/COM, etc) For that, a much more reliable solution is the one given by Jim McKeeth below, provided that MemCounters.PagefileUsage is also added to the result. – ciuly Oct 24 '13 at 14:48
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085533
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barmaley57
hlopotun
с учётом своппинга общий объём виртуальной памяти может выходить за эти 2/3 гига в рамках одного приложения?
Нет!

Да! Виртуальная память != виртуальное адресное пространство. В частности, первое может быть больше второго.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085652
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_
А теперь читаем по буквам
_Vasilisk_
Память у каждого процесса своя. И нужно приложить большие усилия, чтобы из одного процесса повлиять на память в другом процессе
показываем мне слово "производительность"

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

ТС: так че там с хэндлами? ТТХ машин, на которых тормозит? Размеры свопа и ОП?
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40085693
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunSmoker
Barmaley57
пропущено...
Нет!

Да! Виртуальная память != виртуальное адресное пространство. В частности, первое может быть больше второго.
Да, mapping, AWE - это все понятно. Но для ТС лучше будет ответ "нет". Один фиг, одномоментно эти вещи юзать в процессе не получится.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40086058
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Fr0sT-Brutal#22350171]
_Vasilisk_

.......................
ТС: так че там с хэндлами? ТТХ машин, на которых тормозит? Размеры свопа и ОП?


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

Спасибо.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40086064
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotunМожет есть какие интересные статьи на эту тему?

Даже если такие статьи есть - у тебя нет времени их читать, надо авгиевы конюшни
разгребать. Просто ткни их пальцем в Performance Monitor со счётчиками на диск, процессор
и память, пусть гуглят, пишут и присылают логи.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40086074
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

hlopotunМожет есть какие интересные статьи на эту тему?

Даже если такие статьи есть - у тебя нет времени их читать, надо авгиевы конюшни
разгребать. Просто ткни их пальцем в Performance Monitor со счётчиками на диск, процессор
и память, пусть гуглят, пишут и присылают логи.


там разный народ (я про клиентов), некоторые про всё это не имеют ни мальйшего понятия и обьяснять им что то трудно. Поддержка так и отправляет многих покупать новую технику но если проблемма действительно существует её надо решать. А кому решать найдётся. Спецы хоть и не в избытке но имеются.
И всётаки интересно было бы почитать что то вроде "Как я исследовал причину потери производительности программой ...." или что то в этом духе.
Сейчас гуглю на эту тему но всё какая то фигня лезет, на уровне как оптимизировать windows итп.
Интересны именно средства мониторинга и методика их использования.
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40086077
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Система в целом - вышеназванный Performance Monitor. Читать штатную справку.
Конкретное приложение - профилер. Для Дельфи это AQTime. читать документацию.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40086138
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun,

удаленная отладка, если такая возможна, может помочь. посмотришь прямо удаленно на месте что там внутри происходит
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40086151
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно что-то вроде ProcessExplorer поковырять на предмет запуска через комстроку и экспорта в файл. Либо апишки perfmon курить
...
Рейтинг: 0 / 0
Способы борьбы с фрагментацией памяти
    #40086157
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема может быть в каком-то служебном списке, который растет и который сложным образом перебирают/пополняют 100 раз в сек.
На объем памяти это может заметно не сказаться, но тормоза добавит знатные. Особенно неприятно, если это будет код в сторонней библиотеке.

И выявить эту проблему внешними инструментами нереально.

Поэтому советы из зала тут малополезны.

Все ИМХО.
...
Рейтинг: 0 / 0
65 сообщений из 65, показаны все 3 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Способы борьбы с фрагментацией памяти
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]