カーネルがキャッシュとして使うメモリのサイズを制限する方法を教えてください

Ubuntu 20.04をメモリ32GBのマシンに導入しSambaのファイルサーバをやらせてます

free -hコマンドで見るとavailableが27GB超と十分あるようなのですが、
数時間稼動させてるとbuff/cachaが30Gi以上となり、
ssh接続時に30秒ほどスワップインが発生しつづけて接続タイムアウトを起こす、
cronのジョブが起動するまでに1分以上かかる等の状況が発生しており、
この遅さを解決したいと思ってます

そこで32GB中キャッシュは25GBまで、と制限して、残り5GBくらいにその他OSの
プロセスを残す、スワップアウトさせない…なんてことができないかなと思ってます
vm.dirty_background_bytesやvm.dirty_background_ratioをいじってみましたが、
効きませんでした

メモリはスロットがまだあるので増設はできますが、増設したら増設した分キャッシュが
メモリを占有し、今と同様、他プロセスを圧迫するかと思い、それ以外の対応を
まずはとりたいと思ってます