首页 > 其他分享 >共享LLC来减少ipi中断

共享LLC来减少ipi中断

时间:2024-09-02 16:06:20浏览次数:10  
标签:wakelist return ipi queue LLC 共享 ttwu cpu

linux kernel唤醒进程的步骤:

select task rq,enqueue,active task。

对于enqueue调用链是:try_to_wake_up->ttwu_queue->ttwu_queue_wakelist

static bool ttwu_queue_wakelist(struct task_struct *p, int cpu, int wake_flags)
{
    if (sched_feat(TTWU_QUEUE) && ttwu_queue_cond(cpu, wake_flags)) {
        if (WARN_ON_ONCE(cpu == smp_processor_id()))
            return false;

        sched_clock_cpu(cpu); /* Sync clocks across CPUs */
        __ttwu_queue_wakelist(p, cpu, wake_flags);
        return true;
    }

    return false;
}

__ttwu_queue_wakelist会给选择到的cpu发ipi中断,但是要先满足一些条件,包括ttwu_queue_cond。

static inline bool ttwu_queue_cond(int cpu, int wake_flags)
{
    /*
     * If the CPU does not share cache, then queue the task on the
     * remote rqs wakelist to avoid accessing remote data.
     */
    if (!cpus_share_cache(smp_processor_id(), cpu))
        return true;
...
  return false; }

这个函数表明,如果当前cpu和选择的target cpu是共享llc则返回false。这样__ttwu_queue_wakelist就不会执行,ipi也不会发送。这在vm上的意义是共享llc可以减少ipi中断带来的vm exit。

标签:wakelist,return,ipi,queue,LLC,共享,ttwu,cpu
From: https://www.cnblogs.com/banshanjushi/p/18392858

相关文章

  • 共享栈:两栈共享空间
            现在这里插个链接,这是笔者之前写的一篇文章,讲的是基础版的栈,如果对栈不太熟悉可以先看看这一篇文章。引入    上一篇文章我们学到了栈的顺序存储,这种方法只允许在栈顶针对元素进行操作,所以他并不存在像线性表一样在插入或删除操作时考虑移动元素的问......
  • 计算机毕业设计django+vue校园共享单车管理系统【开题+论文+程序】
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着校园规模的不断扩大和师生出行需求的日益增长,校园内的交通问题日益凸显。传统步行方式虽环保但效率低下,而私家车与电动自行车的无序停......
  • 多线程篇(ThreadLocal & 内存模型 & 伪共享(ThreadLocal ))(持续更新迭代)
    目录一、ThreadLocal1.前言2.简介3.与Synchronized的区别4.简单使用5.原理5.1.set5.2.get5.3.remove5.4.与Thread,ThreadLocalMap之间的关系5.常见使用场景场景一:存储用户Session场景二、数据库连接,处理数据库事务场景三、数据跨层传递(controller,servi......
  • 多线程篇(ThreadLocal & 内存模型 & 伪共享(内存可见性))(持续更新迭代)
    目录一、内存可见性问题(并发编程之美)二、Java内存模型(深入理解JVM第三版)1.简介2.硬件的效率与一致性3.Java内存模型3.1主内存与工作内存3.2内存间交互操作3.3对于volatile型变量的特殊规则3.4针对long和double型变量的特殊规则3.5原子性、可见性与有序性原......
  • 3.3.2 IPIPE对Linux中断使能与屏蔽的改造
    点击查看系列文章=》 InterruptPipeline系列文章大纲-CSDN博客        3.3第一行之hard_local_irq_disable()                 3.3.1 Linux中断的使能与屏蔽                        3.3.1.1 中断使能与屏蔽的三重......
  • COMP20003 Algorithms and Data Structures Spellcheck Lookup
    Assignment2:SpellcheckLookupGeneralYoumustreadfullyandcarefullytheassignmentspecificationandinstructions.Course:COMP20003AlgorithmsandDataStructures@Semester2,2024DeadlineSubmission:Friday6thSeptember2024@11:59pm(endo......
  • IO进程day06(进程间通信、信号、共享内存)
    目录【1】进程间通信IPC1》进程间通信方式2》无名管道1>特点2>函数接口3>注意事项练习:父子进程实现通信,父进程循环从终端输入数据,子进程循环打印数据,当输入quit结束。3》有名管道 1>特点2>函数接口3>注意事项 练习:通过两个进程实现cp功能 4>有名管......
  • 【Internet Protocol】ip介绍,如何组局域网实现远程桌面和文件共享
    @目录1.何为“上网”1.1定义1.2为什么连了WiFi就能上网了?2.ip2.1什么是ip2.2为什么区分广域网和局域网,ip的唯一性2.3如何查看设备的ip2.4什么叫"ping"2.5区分是否两个ip是否在同一局域网2.5.1最稳妥的方式:ip&mask2.5.2最方便的方式:ping2.6ipv4与ipv6的区别3.远程桌面控......
  • CUDA教程之 10 掌握 CUDA 矩阵乘法:共享内存、Tile 内存合并和 Bank 冲突简介(教程含源
    介绍在使用CUDA进行GPU编程的世界中,优化性能是关键。实现此目标的最强大技术之一是使用共享内存。本博客将引导您完成使用共享内存执行矩阵乘法的CUDA程序,特别关注理解分块内存合并和存储体冲突。在本文结束时,您将牢固掌握共享内存如何显著加快您的计算速度以及如何......
  • day10(IO进程)进程间的通信---共享内存
    目录1.特点2.步骤3.函数接口4.命令1.特点1)共享内存是一种最为高效的进程间通信方式,进程可以直接读写内存,而不需要任何数据的拷贝。2)为了在多个进程间交换信息,内核专门留出了一块内存区,可以由需要访问的进程将其映射到自己的私有地址空间。进程就可以直接读......