Win32:
At server startup, the memory usage before any connections is 150mb physical, 150mb virtual (avg).
After letting that server sit overnight and after only 1 successful connection and one failed connection, EQ2World.exe process is sitting at 398mb physical, 428mb virtual - 0 zones, 0 clients.
The Win32 binary, even with players online doing stuff, normally sits around 0-10% CPU (see comparison below - important)
When you MINIMIZE the console (to the Windows taskbar), memory stats fall through the floor! Garbage collection, anyone?
Physical Memory drops to 1,300K <-- Kilobyte! woot. Virtual stays the same, but hey - check out that low-memory usage, baby!
Win32 CPU Utilization Tests:
1 login, CPU was around 0%.
2 logins, another zone, CPU is 0%.
3 logins, a 3rd zone, after the CPU settled down, hung out around, yes, 0% steadily
WIn32 Conclusion: Only when lots of spell/script processing is going on do you ever see the Win32 binary using more than 0-1% CPU. Memory slowly creeps higher over time, suggesting a leak.
Linux x86:
Using "top" (thanks Scatman), eq2world binary starts up using 9% of the total system memory (2gb). That is comparible to the Win32, considering we have many more spawns and other data loaded.
RES showed 150m or so when it first started
VIRT showed about 150m or so as well - first startup
Overnight, and currently with 1 player online, RES and VIRT show 276m / 492m
Total system memory free last night was 1,300MB - this morning (8 hours later) it's 919mb
The linux-based eq2world process constantly utilizes between 15-40% of the CPU, no matter how many are connected (up to 3 connections monitored at this time). With 1 connection, it averaged 15%. Soon as a second came online in another zone, it shot up to 30% average and dropped and rised between 15-30%. When the third came on, it did not rise again, stayed at that 30-35%, with now 3 different zones active.
Linux CPU Utilization tests:
1 login, CPU was around 7%.
2 logins, another zone, CPU is 15%.
3 logins, a 3rd zone, after the CPU settled down, hung out around 23-30% steadily
Linux Conclusion: I understand EQ2Emulator is primarily designed for Win32, though Linux OS's should be supported by the inherent nature of the code. I am merely pointing out the obvious differences in how the two binaries run on their respective operating systems.
Scatman pointed out something obvious to me I hadnt' considered. My script generator puts a SetPlayerProximityFunction() in EVERY script, because I was noticing lately, more NPCs react to my presence than do not. The cheering, saluting, shouting something out, waving you over, or "shuddering" in fear. Scat mentioned that with 200+ NPCs in each zone constantly checking for proximity... could be a problem. But you tell me... we need this functionality to match Live (or custom) servers.
One thing the Windows version does not have is the completed work since the Dev team moved over to a Dev server, plus the Dev server has many more zones spawned and thus many more Spawn and Quest scripts implemented. But that does not really excuse these major differences.
Note: While I was typing this, the free memory on the Linux machine has dropped another 100mb -> now at 859mb. I think we're leaky.