Are synonyms supported with KNN search?

Yes with msearch because now you are running 2 queries in 1 single request in parallel.

If we implement anything natively in k-nn where we search for n vectors in 1 query it will have same issue. The parallelization needs to be done at k-nn plugin level. With msearch the parallelism is happening just above k-nn plugin level i.e. at opensearch corridnator node level, so both will have same performance problems.

Did you face performance issue while running single query msearch query or at some scale?

If it is happening at scale then I think some performance tuning can help here like increasing search and msearch threads.