ICH
Contents
Description
When a chunk is downloaded and results corrupted, aMule would normally redownload the whole chunk (9.18MB) in order to get the file correctly. ICH (Intelligent Corrupt Handling) is a workout to avoid redownloading the whole chunk when possible.
How does it work?
Once a chunk is known to be corrupt, it begins to redownload it. Instead of dropping the whole already-downloaded chunk, it keeps it and deletes the first 180KB. It then downloads the first 180KB of that chunk again.
Once it has downloaded it, it will add it to the rest of the already downloaded chunk and hash it, to see if the resulting hash is the same as the hash it should have. If it is, the chunk has been successfully completed. If it is not, then it will download the next 180KB of the chunk and so on.
What are it's results?
The best that can happen with ICH is that the first 180KB in the chunk are the corrupted ones. If so, only 180KB have to be redownloaded out of the 9.18MB the whole chunk is in size.
The worst case sould be when the last 180KB of the chunk are the corrupted bytes. In this case, the whole chunk has to be redownloaded. Anyway, since redownloading the whole chunk would have to be done anyway if ICH had been disabled, this is not a loss at all (except for some little CPU resources).
Is it usefull?
It is said that it saves up to 50% of the corrupt downloaded chunks on average, which means that out of every 100MB of corrupted data, only 50MB are redownloaded. Which is quite good!
Is it CPU expensive?
Not at all. On any modern CPU, hashing the chunks takes less resources that you would imagine. Since it saves 50% corrputed data in average (and can even save up to 99%) and the hashing process is only done from time to time when necessary, the resources it makes use of are practically null.
Even on old CPUs you should still take into consideration not disabling ICH, since the amount of CPU it takes, compared to the amount of corrupted data it might save, is far enough to keep it active.
To disable it, go to Preferences -> Files -> ICH -> ICH active (disable)
Aditional notes: Take a look at the AICH documentation since AICH is the evolution of ICH.