Board index » delphi » ENABLE_HYPERTHREADING - no effect
Anders Melander
![]() Delphi Developer |
ENABLE_HYPERTHREADING - no effect2006-01-31 06:17:54 PM delphi109 This week-end we finally upgraded one of our customers InterBase servers to InterBase 7.5.1 - and things have gone to hell. The old system was running InterBase 7.1SP2 on Windows 2000 Advanced Server on a quad Xeon 2.8GHz with HyperThreading. HT was disabled in InterBase though. The new system is running InterBase 7.5.1 on Windows Server 2003 on the same hardware. Since Windows Server 2003 supposedly knows how to deal with HyperThreading, I enabled HT in InterBase. The upgrade went as planned with no problems, but Monday morning, as the users started using the system, the performance declined steadily with CPU at 100% and at noon the InterBase server "finally" crashed and left several hundred scary error messages in the log. After a bit of research I concluded that the crash was the result of memory corruption in InterBase. Before InterBase crashed I had studied the CPU usage pattern and I noticed that the load didn't seem to be distributed properly (properly meaning "as I expected"). When one CPU peaked, all the other CPU's peaked too and when one fell, the others fell with it. This to me looks like a completely random scheduling of threads. I'd have expected to be able to identify some thread affinity. Anyhow, this made me decide to disable HyperThreading in InterBase to see if it made any difference. According to gfix the database was still sane, but with the usual 6-800 index errors. I decided to do a backup/restore to get rid of the index errors and clean the database of any undetected latent errors we might have carried with us from InterBase 7.1. Ten hours later the backup/restore was completed and the system was back up again. Today we have seen the same pattern of declining performance and 100% CPU, but so far InterBase has stayed airborne (still one hour to noon though...). Now, since I disabled HyperThreading in InterBase, I'd have expected InterBase to stay on four of the processors and the CPU load to max out at 50%, but it doesn't - It runs 100% on all eight processors. Is it my assumptions that are flawed or doesn't the ENABLE_HYPERTHREADING setting actually do anything? I have previously observed that CPU_AFFINITY had absolutely no effect on process or thread affinity, so I'd be surprised. -- DIXI Anders Melander Software Developer Denmark |