De qualquer forma, recebi a resposta no stackoverflow, que corroborei ao fazer um pequeno experimento.
"sync" só faz cache sujo para limpar o cache. cache ainda é preservado. O drop_caches não toca em caches sujos e apenas descarta caches limpos. Portanto, para tornar toda a memória livre, é necessário fazer a sincronização antes de drop_caches, caso os daemons de flush não tenham escrito as alterações no disco.
Meu blog sobre esse pequeno experimento -
Quais são exatamente O_DIRECT, O_SYNC Flags, Buffers & Em cache na E / S de armazenamento do Linux?
Link Stackoverflow -