diff --git a/vllm/core/evictor_v2.py b/vllm/core/evictor_v2.py index 3dd12e2e25131..5b1a208b7c866 100644 --- a/vllm/core/evictor_v2.py +++ b/vllm/core/evictor_v2.py @@ -91,8 +91,9 @@ def evict(self) -> Tuple[int, int]: # at the start of OrderedDict. Loop through all these blocks to # find the one with maximum number of hashed tokens. for _id, block in self.free_table.items(): - if evicted_block.last_accessed > block.last_accessed or ( - evicted_block.last_accessed == block.last_accessed and + if evicted_block.last_accessed < block.last_accessed: + break + if (evicted_block.last_accessed == block.last_accessed and evicted_block.num_hashed_tokens < block.num_hashed_tokens): evicted_block = block evicted_block_id = _id @@ -109,6 +110,7 @@ def add(self, block_id: int, content_hash: int, num_hashed_tokens: int, def update(self, block_id: int, last_accessed: float): self.free_table[block_id].last_accessed = last_accessed + self.free_table.move_to_end(block_id) def remove(self, block_id: int): if block_id not in self.free_table: