ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【翻译笔记】上下文切换代价量化笔记

2022-05-04 12:31:49  阅读:148  来源: 互联网

标签:cache 笔记 stride 线程 切换 量化 上下文 代价


【原文】

https://www.usenix.org/legacy/events/expcs07/papers/2-li.pdf

1)介绍

上下文切换的代价

直接代价:进程寄存器的保存和恢复,os的线程调度,tlb的加载,processor的pipline刷新

cache影响代价:不同的负载下,不同的内存访问模型导致cache miss代价

2)衡量方法

直接代价量化方法

2个进程通过管道交互通信的时间c1

2个进程通过管道交互通信+分配访问浮点数的时间c2

c1里,每次通信包含2次上下文切换+1次读和1次写系统调用

2.1)每次线程切换的代价

2w次(读+写)+2w次上下文切换的时间t1

1w次(读+写)时间t2

c1=t1/2w - t2/1w

2.2)c2的代价

在512KB arraySize的情况下,写时延最高到200ms

 

 2.3) 避免潜在因素影响

用两核的cpu,其他线程绑定再第一个核上,实验的绑在第二个核上

使用real-time调度策略SCHED_FIFO,并且给最高的优先级

减少其他线程的影响

sched_setaffinity,sched_setscheduler

3)实验结果

使用IBM机器,每个有512KB L2缓存,cacheLineSize=128B

c1=3.8ms

c2从几ms到1s波动

3.1)dataSize的影响

第一个region(1KB-200KB),线程切换从4.2us到8.7us

因为能匹配L2 cache

第二个region(256KB-512KB),一个进程能匹配L2 cache,但是两个不能,线程切换从38us到203us

每次上下文切换,调度进程需要重新填满L2 cache,我们相信额外的时间是因为cache warmUp时间

在arraySize=384KB,代价开始大幅变动(不同的data访问策略),执行时间主要是花在内存带宽,dataWrite消耗2倍贷款

第三个region(512KB以上),由于数据太多不能放入cache,即使不上下文切换,也会cacheMiss

3.2)条带式访问

arraySize在(32KB,128KB)之间,数据能放入cache,不同stride访问差别不大

当不能放入cache,stride size越大,变化越高

stride=8B,消耗在44us和183us之间,平均116us

stride=128B, 消耗在133us和1500us,平均830us

原因在于stride影响了内存的warm-ups

3.3)实验环境的影响

额外增加ping外部测试,证明双核测试方法比单核更稳定

标签:cache,笔记,stride,线程,切换,量化,上下文,代价
来源: https://www.cnblogs.com/jiangshifu/p/16220794.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有