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). Так же и созданные объекты надо удалять после того как они уже не нужны.