killall -9 sends SIGKILL to a process, not allowing it to clean up after itself. Using killall <pid> sends SIGTERM and is a much nicer way. From the FreeBSD handbook:
Two signals can be used to stop a process, SIGTERM and SIGKILL. SIGTERM is the polite way to kill a process; the process can catch the signal, realize that you want it to shut down, close any log files it may have open, and generally finish whatever it is doing at the time before shutting down. In some cases a process may even ignore SIGTERM if it is in the middle of some task that can not be interrupted.
SIGKILL can not be ignored by a process. This is the ``I do not care what you are doing, stop right now'' signal. If you send SIGKILL to a process then FreeBSD will stop that process there and then[1].
The moral of the story: try killall <pid> first, then try killall -9 <pid>.