Hi guys,
I'm struggling with this problem too. I had it on Froyo 2.2, with Z4Mod or OCLF V2.2. Then I upgraded to 2.3.4 and flashed speedmod k15h.
The damned kswapd0 process still acts up, but I think I figured out the cause(don't have a fix yet, maybe someone who knows linux better can help us).
kswapd0 acts by transferring data from RAM to the SD Card when there's low memory. For example on my I9000, it starts doing that when things go under 10-8 mB of free RAM(Actual RAM, please install Galaxy Tuner and go to Memory Management to see the real figures divided by MemFree/Buffers/Cached).
For example, I had ~6500kb MemFree, then the CPU got to 100%; of course, kswapd0 worked it's "magic", and when it finished the MemFree got to ~26.000 kB.
Also, kswapd0 ceases to use the CPU if you Flush File Cache. So this is a memory handling problem.
I'll try to find a setting inside Galaxy Tuner to see if this solves the problem.
BTW, could Saiboogu, or anyone who had this problem give us the memory handling parameters they have now on their ROMs? We would need the File Cache control settings(SWP/VCP/DEC/DWC/DRA/DBR), and the Application Cache settings too(FA/VA/SS/HA/CP/EA). Maybe this will fix it, because I have no other explanation(and hope) right now.
Don't be afraid to chip in your oppinions, let's find a solution to this sucker(literally).