WinCC 6.0 от скромности явно не
умрёт
Евгений Трунов;
3.8.04
Ситуация. Работает WinCC 6.0 из пакета PCS7. Спустя некоторое время
(от часов до дней) после запуска выдает сообщение о нехватке
виртуальной памяти. Причем от количества памяти (физической 512 Мб,
виртуальной обычно в два раза больше) это не зависит. Анализ списка
процессов в Task Manager'e показывает следующее:
- WinCC запускает около 20(!) процессов, каждый из которых без
особых колебаний запускает около 10-40 потоков;
- это не считая SIMATIC NET, который и так одних сервисов запускает
около 10 штук;
- большинство из процессов WinCC съедает от 5 Мб и выше физической
памяти, и раза в два больше виртуальной. Рекордсменом является
CCProjectMgr.exe - до 67 Мб (!) физической и 328 Мб (!)
виртуальной.
Теперь скажите мне:
- сталкивался ли кто-то с подобными проблемами?
Если да, то:
- КАК побороли? Что мне лучше бы купить 2 Гб RAM, я догадываюсь
:-).
- ЧЕМ должно заниматься обычное Win32-приложение (не-.NET), чтобы
сжирать СТОЛЬКО памяти?
- ЧЕМ думали программисты и инженеры Siemens, создавая такое
чудовище?
- КАК можно со спокойной душой устанавливать такое на объекте?
- ПОЧЕМУ равные по классу системы конкурентов спокойно работают в
128 Мб RAM?
Re: WinCC 6.0 от скромности явно не
умрёт
Юрий Оганесян;
4.8.04
Сразу скажу: с WinCC v6 я не работал.
Теперь: анализ используемого объема памяти лучше производить не
Task Manager'ом, а Системным монитором ("Производительность" в ХР).
Причем это оснастка позволяет вести журнал по каждому процессу, по
которому очень удобно определить "ДИНАМИКУ" захвата памяти - если
память хватается сразу и держится на данном уровне - это приемлемо.
Если идет постоянное увеличение необходимого объема памяти для
приложения, то на 90% - это грубейший косяк (т.к. понятно, что и
2Гб не спасет - только время увеличится). Косяк то ли у SCADА, то
ли не хватает, какой-нить заплатки у ОС - надо смотреть,
однако...,
Но вообще-то мы как раз хотели попробовать v6 и Вы меня
озадачили...
Re: WinCC 6.0 от скромности явно не
умрёт
Маслов
Дмитрий; 4.8.04
WinCC 6 у нас стоит на реальном объекте и память не "течет".
Да, действительно, требования к памяти в WinCC 6 возросли. И для
того, чтобы это понять, не нужен никакой Task Manager, надо просто
почитать документацию, в которой говорится, что для WinCC 6
требуется 512Mb памяти, а рекомендуется - 1Gb. Отчасти это из-за
использования MS SQL Server 2000 - все-таки это полновесный сервер
баз данных, как никак.
С утечками памяти, тем не менее, мне в WinCC 6 сталкиваться не
приходилось.
Re: WinCC 6.0 от скромности явно не
умрёт
Чистяков Дмитрий ОАО СеверСталь; 4.8.04
У нас тоже проблемы с утечкой памяти не наблюдалось.
Надо смотреть, кто её кушает.
А не писали ли Вы что нибудь своё? Или может от третьих лиц
какую-нибудь примочку используете.
А какой буфер у вас стоит на сообщения(количество сообщений в
коротком архиве)? Может это они у вас весь воздух со временем
высасывают?
Ну, и в требованиях сказано, что 512 метров - это для клиента, а
для сервера требуется минимум 1Гиг.
Re: WinCC 6.0 от скромности явно не
умрёт
fresco; 4.8.04
Видимо речь не об утечке. А о том что WinCC стало в два раза больше
и в два раза лучше. А если занимаемый объем памяти увеличится в 10
раз - станет в 10 раз лучше. Это же очевидно :-)
Re: WinCC 6.0 от скромности явно не
умрёт
Nick Gashevsky; 4.8.04
Две недели гонял WinCC6.0 на 256мб памяти. Своп постоянный, но не
повис. Архивировалось ~250 параметров с периодом 1с. Больше всего
памяти съедал SQL.
Re: WinCC 6.0 от скромности явно не
умрёт
Кирил;
4.8.04
WinCC 6.0 SP2 and SQL-2K спокойно работает и на 128МB с CPU 500
MHz. Попроуй с ApDiag.exe от
...\Siemens\WinCC\uTools
Re: WinCC 6.0 от скромности явно не
умрёт
Евгений Трунов;
4.8.04
Собственные приложения могут отъедать для своих нужд сколько
угодно, но как они могут заставить CCProjectMgr забрать 400 Мб
памяти? На SQL Server грешить не могу - он занимает столько же,
сколько обычно и занимает :-). Память тем же CCProjectMgr хватается
не сразу, а поджирается по мере работы. Второй по жадности
компонент - pdlrt.exe, затем идет script.exe. Допустим, тут еще
зажирания можно списать на наличие скриптов, хотя эти же самые
скрипты в WinCC 5.0/5.1 вели себя куда более спокойно.
Почему больше в два раза? 5.1 вполне себе жила в 256 Мб, 6.0
распухла до 1 Гб при аналогичной функциональности. Это 4 раза, а не
два :-).
Re: WinCC 6.0 от скромности явно не
умрёт
Лёха; 5.8.04
Посмотри всё-таки, идёт у тебя накопление памяти или нет в том же
script.exe. У меня по началу в WinCC 5.1 было такое же чудо.
Сжираемая память потихоньку увеличивалась. В итоге проект вис. Дело
было в скриптах. Забывал очищать память, выделенную под
динамические переменные.
Просмотри свои скрипты и остальное.
Re: WinCC 6.0 от скромности явно не
умрёт
shurik; 5.8.04
а как очищать память динамических переменных - приведите пример
Re: WinCC 6.0 от скромности явно не
умрёт
Лёха; 6.8.04
Как, как. Как и раньше. Вы же выделяете под них память (например,
SysMalloc), то её потом и освобождать надо (например, SysFree). Так
же и созданные объекты надо удалять после того как они уже не
нужны.