Recently we found that our software sometimes become very very slow.
With help of debug logs we conclude that in dll a call of memcpy which at most copies 100M sometimes takes 30s and even 60s!
when freezing happens we found that everything seems ok in taskmgr except that system memory exceeds 4G.
The code is in a dll file assuming A.dll which is compiled with intel compiler 10.0. Main exe which calls A.dll is compiled with vs2005 and LARGEADDRESSAWARE option.
The exe consumes 2G phisical memory as usual. while system slows down we notice the exe use 1.4g phisical memory + 1.7 virtal memory.
It is windows xp embbed sp3 32bit. We have modify boot.ini to adopt large memory allocation for the exe as follows:
multi(0)disk(0)rdisk(0)partition(1)\\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /3GB /USERVA=2650
cpu: Intel Xeon CPU E5410 @ 2.33GHz x 8 cores
video card:nvs 295 (256M)
Gpu:gtx 260 (896M)
memory:8G = Samsung DDR2-667 (333 MHz) SDRAM x 4 + Nanya M2D1G72TU89D9B-3C DDR2-800 (400 MHz) x 4
Any help from you will be highly appreciated!
this sounds for me like a problem caused by swapping. Your memory might be too small and Windows starts to page memory to disk. If you try to copy paged memory this result in very high disk utilization and therefore in a very slow copying of the data.
You can check this with the Performance Monitor that ships with Windows XP. Go to Start -> Run and type in "perfmon" and hit ok. The Counter pages/s is important. If this value goes up by bigger numbers while copying, at least a part of your copied memory are coming from disk or is stored at disk.