A few things I've done.
1) Get AMDOverdriveCtrl - although this is a GUI app, you can run a batch job that will let you override the minimum memory clock and allow you to underclock your memory (I haven't yet figured out a config that allows you to override the maximum gpu clock).
Here is the config for lower memory
<OVERDRIVE_PROFILE>
<PERFORMANCE_LEVEL level="2" gpu="100000" mem="30000" voltage="1088"/>
<PERFORMANCE_LEVEL level="1" gpu="55000" mem="30000" voltage="1038"/>
<PERFORMANCE_LEVEL level="0" gpu="15700" mem="30000" voltage="1000"/>
<FAN_SETTING percentage="55"/>
<FAN_CTRL enabled="yes"/>
</OVERDRIVE_PROFILE>
Save that to a file and then run AMDOverdriveCtrl -b filename
Now using aticonfig --odgc you should see a lower memory limit. You can then do sudo aticonfig --adapter=0 --od-setclocks=1000,400 (or whatever you want) to under clock the memory.
My 6870's max stock overclock is 1000 and i haven't figured out how to get AMDOverdriveCtrl to accept a config that goes above that yet. Once you've found what works for you don't forget to save the clocks onto your gpu so they persist through reboots with aticonfig --odcc --adapter=all.
2) Use the phatk kernel (actually I noticed the guide specifies this, I just missed it the first round through)
I've also found that with the version of the SDK outlined here the phatk kernel is better than poclbm with this execution line I get 299+ Mhash/sec out of my 6870:
./phoenix.py -u http://XXXXX -k phatk DEVICE=0 BFI_INT VECTORS FASTLOOP=false AGGRESSION=12 WORKSIZE=128 PLATFORM=0
I don't use the autostart scripts, mainly because I've been futzing with values, but I launch a screen and keep phoenix open in it, and a script to look at gpu temp/current balance in another virtual window.
I'm happy to answer questions about this if people need help.
1aLV7cjRXE89KoychBaGUP8YGm5ZRVNAw - If my info is helpful donations are always welcome.