Disk-based graph indexes for approximate nearest neighbor search (ANNS) must serve latency-sensitive queries and throughput-demanding updates concurrently. We observe that over 40% of search-thread CPU time is spent stalling on disk I/O; such idle cycles are invisible to thread-level scheduling yet available for other work. We present LIOS(Leverage I/O Stall), a framework that executes index updates inside search-side I/O stall windows. LIOS introduces three techniques: (i) splitting each update into resumable subtasks small enough to fit within a single stall window; (ii) bounding the expected overrun of update subtasks to a given threshold; and (iii) dynamically adjusting the fraction of idle time devoted to updates to drive end-to-end search latency degradation toward a user-specified target. We integrate LIOS into two update-optimized ANNS systems, FreshDiskANN and OdinANN. LIOS achieves speedups of up to 2.68$\times$ in insertion and 2.18$\times$ in deletion, with search latency degradation maintained near the user-specified target.
翻译:基于磁盘的近似最近邻搜索(ANNS)图索引必须同时服务于延迟敏感的查询请求和高吞吐量的更新操作。我们观察到搜索线程超过40%的CPU时间因磁盘I/O而停滞;这类空闲周期对线程级调度不可见,但可用于其他工作。我们提出LIOS(利用I/O停顿)框架,该框架在搜索端I/O停顿窗口内执行索引更新。LIOS引入三种技术:(i)将每次更新拆分为可恢复的子任务,使其规模足以适配单个停顿窗口;(ii)将更新子任务的预期超限时间控制在给定阈值内;(iii)动态调整用于更新的空闲时间比例,使端到端搜索延迟退化量趋近于用户指定的目标。我们将LIOS集成到两个面向更新优化的ANNS系统FreshDiskANN和OdinANN中。LIOS在插入操作中实现最高2.68倍的加速比,删除操作中实现2.18倍的加速比,同时搜索延迟退化量维持在用户指定目标附近。