Short: Brutally remove small mem frags on 040/060 systems (+src) Author: bernie@shock.cosmos.it (Bernardo Innocenti) Uploader: bernie@shock.cosmos.it (Bernardo Innocenti) Type: util/boot Use the included AvailFrag program or a system monitor such as Scout or XOper to determine if your system memory list has many small holes of 8 to 256 bytes each. Lots of small chunks are usually made by badly written programs (not freeing all the memory they allocated). On systems equipped with 68040 or 68060 the program SetPatch will load the 68060.library 68040.library at boot time. These libraries will setup the MMU page descriptors to cover all addressable memory space, including space reserved by Zorro boards. Unfortunately, the 040/060 MMUs requires an 512-byte alignament for the page descriptors, even if they take up just 256 bytes. So the libraries free up the remaining 256 bytes in order to give some memory back to the system. On my Amiga 4000, fitted with four Zorro boards, this creates more than 500 memory chunks right after booting the system! Such a fragmented memory list will slow down all AllocMem() and FreeMem() calls as they need to scan almost the entire list before they can reach the first memory chunk bigger than 256 byte. You can test the impact of the memory list fragmentation on your system by copying a very big file to RAM: before and after SetPatch. Someone skilled enough (not me) should really try to patch the 68040 and 68060 libraries to change the way MMU tables are allocated. In the mean time, put AllocFrags anywhere in your Startup-Sequence, after SetPatch. It will remove from the memory list any chunks whose size is equal or smaller than 256 bytes. Using AllocFrags frequently during your normal system activity is not a good idea since it might cause even more fragmentation in your memory list once you close a program and it frees a memory block which was contiguous to one already removed by AllocFrags. I admit AllocFrags is a real hack and it WILL stop working when the OS memory allocation engine is changed (e.g.: to accomodate virtual or protected memory). Anyway, I'm sure that AllocFrags will not cause any incompatibilities or system crashes on the current OS versions upto OS 3.1. Inspect the source code if you don't believe me.