eDonkey (and every other file sharing application worth using for that matter) has a configuration page that allows for setting the
max upload and download bandwidth that the program can use. I'd recommend talking with him and deciding on a maximum amount that his program is allowed to use and then having him set those values in the program. As punishment for violating the negotiated speeds, remove him from the network for a day.
I'm the network controller in my apartment of four people. It helps to know what your connection is capable of and what is fair. If you are on a DSL connection, your roommate definately needs to limit the upload transfer (A DSL connection's and some cable connection's download capability suffers terribly when the upload portion is overburdened, which happens with filesharing. This is likely to be your main issue). While making sure that no other system is using the network (disconnecting them is recommended), run a
line speed test a few times. Record the lowest indicated upload and download speeds. These speeds indicate what you can expect out of your connection consistently. Use these numbers to come to a conclusion on what maximum settings your roommate can run.
With filesharing in my apartment, I have an 80% rule. Each person gets a portion of the connection speed, and the filesharing on each system should not exceed 80% of their share. I understand that you have three roommates, so I will show an example of what the maximum bandwidth allocations could be for each person. Let's assume that you found out that your download speed is 2000kbps and your upload speed is 300kbps. Divide those numbers by three and apply the 80% rule. Each person should not allow their filesharing program to exceed a usage of 500kbps (62.5kBps) of download speed and 80kbps (10kBps) of upload speed. Notice that I rounded down; never round up with these speeds, always down. After locking his eDonkey client down to these speeds, you should notice a great improvement on the connection.
If your speeds are lower than what I put in the example, you may want to lower the percentage to 70% or even lower. Experimentation will show what numbers work well. 80% works well and makes us all satisfied with our setup, so that's what we use.
You will want to run the
speed test periodically (remember to make sure that there aren't any other systems using the network at the time) to make sure that you know what your connection is capable of.
kc0arf is correct though. This is more of a social engineering problem rather than network engineering problem. Either your misbehaving roommate shapes up, or you disconnect him and tell him that he's on his own for his internet connection.