简介:多线程编程模型被广泛用于促进多核上的应用程序执行.然而,并发执行的线程对最后一级缓存(last level cache,LLC)的竞争造成的干扰可能会导致性能下降.英特尔缓存分配技术(cache allocation technology,CAT)提供了一种机制为不同线程实时分配缓存.然而,有 2个原因导致现有分配方法并不适用于多线程应用.首先,它们是为多应用场景量身定制的,而不是为涉及多个相关线程的单个多线程应用场景设计的.其次,它们旨在提高每周期指令数(instruction per cycle,IPC),这不是一个在多线程场景中合适的性能指标.为了解决这个问题,提出了LPart,这是一种用于多线程应用程序的智能缓存分配技术,通过分配缓存显著提高了系统的吞吐量.LPart利用深度强化学习为应用程序中的不同线程分配适当数量的缓存空间.在微基准测试、Redis、商用分布式存储系统和多种应用场景上评估LPart的实验结果表明,与默认配置相比,LPart分别实现了26.9%,8.1%,9.8%,24.1%的性能提升.展开