Ray object cache eviction policy and spill policy both are FIFO based, is this good fit for AI workload etc?

How severe does this issue affect your experience of using Ray?

  • None: Just asking a question out of curiosity
  • Low: It annoys or frustrates me for a moment.
  • Medium: It contributes to significant difficulty to complete my task, but I can work around it.
  • High: It blocks me to complete my task.

after reviewing the code for Ray core eviction and spill object part. I personally feel that the eviction is just one FIFO LRU cache, it does not honor the read access locality and increase the entry priority in LRU. is this correct understanding? if the AI workload has no dataset locality? one dataset is more frequently accessed by engine. or every dataset is FIFO equal? could you please share your insight?

and also, I see the spill object code logic, there is no locality too. we just spilled all sealed and rc=1 objects in FIFO way to free out memory. if we do not spill out based on locality, is it possible we just keep spill and recovery if DRAM size is small, we rely on NVMe to hold the datasets?

I feel the key questions are that during AI workload, if all datasets have the 20/80 rule has hot part s in the dataset so that if we created based on priority, it will make sense?