Смотреть правильнее не на free а на available. Это, грубо говоря, сколько потенциально есть свободной памяти, если весь кэш скинуть (это неточное определение!).
Если памяти приложениями используется мало, то кэш постепенно может занять практически всю свободную память и это более чем норма - ведь это означает более высокую скорость к данным. В некоторых сценариях использования это даже нарочно так делают: заводят много памяти, чтобы в кэше лежало значительная часть дисковых данных. Это хорошо, например, для баз данных и вообще для часто интенсивно и повтороно читаемых данных любого вида.
Совсем до нуля кэш сбрасывать нельзя, потому что многое будет ощутимо "тормозить". Поэтому система всегда начинает выносить часть страниц из памяти в swap ещё до исчерпания памяти. Этим в значительной степени управляет параметр vm.swappiness. Чем он ниже, тем менее охотно системой используется swap. Но при этом в типичной "домашней" системе использование swap это даже хорошо, потому что некоторые приложения (типа браузера) охотно выделяют память, которая им нужна довольно редко. Например, если открыть много вкладок в браузере, то будет выделено прилично памяти, но если на эти вкладки не переключаться, она спокойно уедет в swap и будет там лежать до востребования.
Это некоторые общие моменты, чтобы было более понятно, как это всё работает. На самом деле управление памятью в ядре Linux крайне сложно устроено. Говорят, даже среди разработчиков ядра единицы его понимают более-менее полностью. А всё ради того, чтобы эти механизмы качественно или хотя бы приемлемо работали в самых разных сенариях.
Больше чем установлено в компьютер памяти у вас не станет. Зачем вам больше свободной памяти? Ведь именно в этом назначение памяти хранить данные (в том числе кэш). Если вы очистите его - программе придётся снова считывать данные с диска (или другого источника). Так что не занимайтесь ерундой - оставьте управление памятью операционной системе - она это сделает лучше вас!