question about kernel compilation

i have already built a kernel for my computer but i still have a few question:
what module should be compiled as module and what should be compiled into the kernel?
they have any benefit over each other (for modules i guess you can unload them if they cause problems, but compiling into the kernel makes it faster?)

assuming i am building it for my notebook and the only think that is added often is usb memory sticks, should i compile everything into the kernel?

another question i have is that on my first compilation i didnt include support for scsi driver because i have ata hdd in my notebook, but then the kernel failed to load, so after recopiling it with scsi driver support enabled, it booted perfectly.
another stratnge thing was that with this build, at boot, the dm_mod module (guess its the device manager) fails to lead.
why could be that?

thank you

A general rule of thumb you can use is: If you need that module to read your current hardware then it should be built in the kernel. Everything else can go as a module. If you don’t care about the size of the kernel then all built in is no problem either. I believe that loadable modules are essentially used to keep the size of the kernel down, avoid having bugs loaded and some power saving. But I know very little of this.

I don’t know if you get performance benefits from compiling it into the kernel but even if you have don’t expect them to be significant.