Hi Alan,
FreeRADIUS does a mix of selects, inserts and updates for accounting.
It may be that the DB can only handle 1000 transactions/s with that mix.
See also "sqltrace" config in sql.conf. You can try the following tests:
- start off with a clean (i.e. empty) DB
- enable sqltrace
- run 10's of 1000's of packets through the server
- wipe the DB
- use a command-line SQL client to re-play SQL queries from the sqltrace
file