I'm with SEP on this.
You've got log_slow_queries already, so look through that code (/tmp/regen_slow.log).
From there, use mysql's "explain" command on each of the queries, and find on which are really badly written (i.e. not using indexes etc), and create appropraite indexes to fix that up.
The 400MB of swap is irrelavant. The nearly 6GB of Cache prooves this.
The only questionable value I can see in the MySQL configuration there is the max_join_size. 60000M ? On my system, it's using the default value (max_join_size = 18446744073709551615).
You might also want to review your *_buffer_size values.
If you're doing lots of queries, you might want to increase the query_cache_* values to cache more query results internally.
But in any case, you've not said how big your data set is, nor given examples of the SQL queries that are being run on it. So that makes it hard to reccomend values.
If the database is doing millions of little queries, the tuning is different than it would be if you were doing only thousands of big queries.
It also depends on what table types are in use. Use the 'show engine ...' commands to see what each is doing when it's like this. It could be you're starting lots of innodb transactions and not closing them, or.. or.. or..
One long-haired git at your service...