High autovacuum CPU/IO usage from database with more than 10k append-only tables
Disabling autovacuum is a very bad idea. Autovacuum removes dead lines and updates statistics. Disabling autovacuum will quickly lead to performance loss. Also, when autovacuum is disabled, sooner or later you will encounter a wraparound problem.
Since you are using TimescaleDB, why not use the drop_chunks() function to remove old data? This will significantly reduce the need to perform vacuum on tables.
However, autovacuum will still need to handle tables to prevent the wraparound I wrote about above. In addition, you can change the size of the chunk so that the size of the data to be processed by autovacuum is not so large.
There are no universal values ​​for the autovacuum setting. Try adjusting the following settings for the best performance in your case:
autovacuum_vacuum_threshold
autovacuum_vacuum_scale_factor
autovacuum_vacuum_cost_delay

For statistics:
autovacuum_analyze_threshold
autovacuum_analyze_scale_factor

You can also configure cost parameters for the autovacuum daemon to process pages:
vacuum_cost_page_hit
vacuum_cost_page_miss
vacuum_cost_page_dirty
vacuum_cost_limit