There are several types of performance problems due to the routing metadata. One is the predictable, high perf impact of mongos fetching the entire routing table from the config server at cold start-up.
Make mongos preload the routing table for all collections on startup.
1) Use ShardingCatalogClient::getAllDBs to get a vector of all the databases.
2) For each database in the vector, use CatalogCache::getAllShardedCollectionsForDb to get all its sharded collections.
3) For each sharded collection, use CatalogCache::getShardedCollectionRoutingInfoWithRefresh to load the routing info for that collection.