在某些场景下,需要把程序绑定到指定CPU核心提高执行效率。...个核:则dwThreadAffinityMask=0B_0100;(0x04) 第3个核:则dwThreadAffinityMask=0B_1000;(0x08) …… 如果要绑定到多个cpu核心...,比如绑定到第1和2个cpu核时,dwThreadAffinityMask=0B_0110,对应的十六进制数也就是0x06。...,可以决定进程内的所有线程共同运行在指定的处理器上。...,尤其是在多核系统中,有助于提升程序的执行效率。
之后重新部署项目: hexo g hexo d 如果你是用 hexo 框架搭建博客并部署到 Github Pages 上: 每次hexo g hexo d 后会把你的博客所在目录下 public 文件夹里的东西都推到...Github Pages 仓库上,并且把 CNAME 文件覆盖掉,解决这个问题可以直接把 CNAME 文件添加到 source 文件夹里,这样每次推的时候就不用担心仓库里的 CNAME 文件被覆盖掉了...之后我们可以在网站的Github项目的根目录看到这个文件: 还有一种方式是:在网站的Github项目上,点击设置Settings,找到Custom domain,填入申请的域名,并保存。...(3)更改域名服务器为: f1g1ns1.dnspod.net f1g1ns2.dnspod.net (4)等待你的 DNS 配置生效: 对DNS的配置不是立即生效的,过1分钟再去访问你的域名看看有没有配置成功...三、参考资料 知乎:github怎么绑定自己的域名?
摘要 在项目开发中,我们可能会适时的选择http或者tcp绑定的wcf服务,可以使用控制台来托管服务,也可以使用IIS来承载服务,由于IIS本身对于请求和异常的处理能力,使得我们可以省去很多开发精力而成为托管服务的首选...,之前我做的WCF服务时托管在控制台的,今天摸索了一下采用tcp绑定的wcf托管到IIS7的过程,分享一下,希望能帮助到想移植服务到IIS的朋友。...开始移植 接下来我们需要将这个普通的服务移植Host到IIS上, 第一.首先需要更改web.config文件,将服务配置为net.tcp绑定 配置文件如下: 代码 的一些组件,那么我们按照提示打开”windows的更新安装“ 要将WCF的tcp绑定方式的服务host在IIS上,首先你需要启用这个功能 ?...第二个是确认等IIS7全部配置完毕后,需要重新将asp.net4.0注册到IIS上 ?
true; } @ConfigurationProperties这个注解的作用就是将外部配置的配置值绑定到其注解的类的属性上,可以作用于配置类或配置类的方法上。...方法的做的事情就是将外部属性配置绑定到@ConfigurationProperties注解标注的XxxProperties类上,现关键步骤总结如下: 从bean上获取@ConfigurationProperties...接下来我们紧跟主线,再来看下外部配置属性是如何绑定到@ConfigurationProperties注解的XxxProperties类属性上的呢?...,在属性绑定时用来添加一些额外的处理逻辑,比如在onSuccess方法改变最终绑定的属性值或对属性值进行校验,在onFailure方法catch住相关异常或者返回一个替代的绑定的属性值。...9 小结 好了,外部配置属性值是如何被绑定到XxxProperties类属性上的源码分析就到此结束了,又是蛮长的一篇文章,不知自己表述清楚没,重要步骤现总结下: 首先是@EnableConfigurationProperties
项目链接https://github.com/jeessy2/ddns-go项目简介自动获得你的公网 IPv4 或 IPv6 地址,并解析到对应的域名服务。...特性系统中使用Docker中使用使用IPv6WebhookCallback界面开发&自行编译特性支持Mac、Windows、Linux系统,支持ARM、x86架构支持的域名服务商 阿里云 腾讯云 Dnspod...IP:9876,修改你的配置,成功Linux的x86或arm架构,推荐使用Docker的--net=host模式。...参考 Docker中使用虚拟机中使用有可能正常获取IPv6,但不能正常访问IPv6Webhook支持webhook, 域名更新成功或不成功时, 会回调填写的URL支持的变量变量名说明#{ipv4Addr...#{ip}新的IPv4/IPv6地址#{domain}当前域名#{recordType}记录类型 A或AAAA#{ttl}TTL如 RequestBody 为空则为 GET 请求,否则为 POST 请求
SMP架构 VS NUMA架构 SMP架构,多处理系统内有许多紧耦合多处理器,在这样的系统中,所有的CPU共享全部资源,如总线,内存和I/O系统等,操作系统或管理数据库的复本只有一个,这种系统有一个最大的特点就是共享所有资源...); 在多核体系CPU下,提高外设以及程序工作效率最有效的办法就是让每个物理核心负责专门的事情,每个核心也有L1,L2,L3缓存,进程或者线程绑定核心以后会提高L1/L2/L3的缓存的命中率,同时进程会一直在这个...CPU核心上运行,不会被操作系统调度到其他的CPU核心上,节省了反复调度带来的开销。...同时对于NUMA架构,进程的在多个CPU核心上切换会导致大量的L3缓存失效,性能损耗是非常大的。...CPU绑核适应的情况 计算密集型的进程 运行时间敏感、核心的进程 CPU进程或者线程独占 进程或者线程绑定到某个CPU Core,仍然可能会有线程或者进程切换的发生,如果想到达到进一步减少其他进程对于该进程或者线程影响
第二部分是在多核心CPU场景下,多核心之间的频繁上下文调度会导致Redis变慢,今天我们更近一步的分析一下多核心CPU场景以及NUMA架构下的Redis运行机制。...多核心的服务器上,Redis实例有可能会被频繁的调用到不同的CPU物理核心上,每次这种CPU物理核心的调度,都会带来运行时指令、信息和数据加载的过程,这会大大影响Redis的性能,为了解决这个问题,我们通常采用一种...简称"绑核" 要让一个Redis总是绑定在一个CPU物理核上,我们通常使用taskset命令来实现,例如下面的方法,就可以把Redis服务绑定在核心编号为1的CPU上: taskset -c...到这里,我们知道了,为了避免多核心之间的上下文切换,我们可以通过绑定Redis和某个CPU核心。下面来看NUMA架构对Redis的影响。...有了上述结果,我们就能发现,在绑定核心的时候,需要按照编号的分布来进行绑定,而不能按照编号顺序来绑定。而且,本质上,绑定的是逻辑核,而不是物理核。
前言 绑定自己的域名到 Cloudflare Worker 的教程之前已经整合在【教程】使用 CF-Worker-Dir 在 Cloudflare Worker 上免费搭建导航网站,博主小俊还天真的以为当时的教程已经十分详细了...::(笑眼),但是有个访客说还是不是很明白,希望我能再写一篇比较详细的将绑定自己的域名到 Cloudflare Worker 的教程,那现在我们就来再教一下如何绑定自己的域名到 Cloudflare Worker...绑定域名教程 根据【教程】使用 CF-Worker-Dir 在 Cloudflare Worker 上免费搭建导航网站的搭建教程搭建完成之后,使用 CloudFlare Worker 提供的域名就可以进入我们搭建的导航页啦...可是 CloudFlare Worker 提供的域名太长了,那么我们就可以将自己的域名绑定到 Cloudflare Worker 上 1....设置路由之前,我们先要设置一个记录 名称:你喜欢的子域名或根域名 IPv4地址:你的 IP 地址(如果没有能绑定的 IP 地址,可以输入 8.8.8.8 大法占位 image.png 4.
支持超线程的numa架构 物理硬件视角, 将多个CPU封装在一起,这个封装被称为插槽Socket; Core是socket上独立的硬件单元; 通过intel的超线程HT技术进一步提升CPU的处理能力,OS...L2缓存和L3缓存不分指令和数据。L1和L2缓存在第一个CPU核中,L3则是所有CPU核心共享的内存。L1、L2、L3的越离CPU近就越小,速度也越快,越离CPU远,速度也越慢。...三级缓存要比一、二级缓存大许多倍,这是因为当下的 CPU 都是多核心的,每个核心都有自己的一、二级缓存,但三级缓存却是一颗 CPU 上所有核心共享的。...因此在应用程序运行时要尽可能地避免跨NUMA访问内存,这可以通过设置线程的CPU亲和性来实现。常用的修改方式有如下:(1)将设备中断绑定到特定CPU核上。.../mongod (3)可以使用 taskset 命令把一个程序绑定在一个核上运行。 taskset -c 0 .
先来认识 CPU 的架构,只有理解了 CPU 的 架构,才能更好地理解 CPU 是如何读写数据的,对于现代 CPU 的架构图如下: 可以看到,一个 CPU 里通常会有多个 CPU 核心,比如上图中的...1 号和 2 号 CPU 核心,并且每个 CPU 核心都有自己的 L1 Cache 和 L2 Cache,而 L1 Cache 通常分为 dCache(数据缓存) 和 iCache(指令缓存),L3 Cache...现在假设有一个双核心的 CPU,这两个 CPU 核心并行运行着两个不同的线程,它们同时从内存中读取两个不同的数据,分别是类型为 long 的变量 A 和 B,这个两个数据的地址在物理内存上是连续的,如果...我们来思考一个问题,如果这两个不同核心的线程分别修改不同的数据,比如 1 号 CPU 核心的线程只修改了 变量 A,或 2 号 CPU 核心的线程的线程只修改了变量 B,会发生什么呢?...最开始变量 A 和 B 都还不在 Cache 里面,假设 1 号核心绑定了线程 A,2 号核心绑定了线程 B,线程 A 只会读写变量 A,线程 B 只会读写变量 B。
(图片依旧来自网络) ---- 查看 1/2/3 级缓存大小 程序执行时,会先将内存中的数据加载到共享的 L3 Cache 中,再加载到每个核心独有的 L2 Cache,最后进入到最快的 L1...另外,你也会注意到,L3 Cache 比 L1 Cache 和 L2 Cache 大很多,这是因为 L1 Cache 和 L2 Cache 都是每个 CPU 核心独有的,而 L3 Cache 是多个 CPU...按照内存布局顺序访问,将可以有效的利用 CPU Cache 带来的好处,这样我们代码的性能就会得到很大的提升。 太细了,以我现在的认知水平,先记着吧。 如果是多核呢?...虽然 L3 Cache 是多核心之间共享的,但是 L1 和 L2 Cache 都是每个核心独有的,如果一个进程在不同核心来回切换,各个核心的缓存命中率就会受到影响,相反如果进程都在同一个核心上执行,那么其数据的...当有多个同时执行「计算密集型」的线程,为了防止因为切换到不同的核心,而导致缓存命中率下降的问题,我们可以把线程绑定在某一个 CPU 核心上,这样性能可以得到非常可观的提升。
线程每次写入或读取队列数据后执行一些无意义循环用于消耗时间,模拟业务逻辑。 所有线程分别绑核,避免线程迁移导致 Cache 抖动,且绑定的核心属于同一个 CPU。...奇怪的现象 测试发现,线程绑到不同的核上,有显著的性能差异: 绑核说明: 核 #4 #5 #6 #8 #12 #100 均为同一个 CPU,不存在跨 NUMA 访问内存的情况; 核 #4 #100 是一对...: 避免跨 NUMA 的远程内存访问,除了降低访问延迟,对 L3 也更友好 将线程绑核,避免 Cache 抖动,具体是避免 L1 和 L2 的抖动 共享 L3 的存在是透明的,软件上不关心,也无法关心...ns 访问本地内存 75 ns 访问远程内存 130 ns 结论与优化建议 结论是,在 AMD 服务器下,如果要获得更高的性能,要针对 L3 进行优化,方法为:把一组任务(线程、进程)绑定到同一个...CCX 下的核心。
L3 Cache在物理上被分为两部分:L3 Cache TAG和L3 Cache DATA。L3 Cache TAG集成在每个内核集群中,以降低监听延迟。L3 Cache DATA则直接连接片上总线。...例如将指定进程关联绑定到指定的CPU上,从而提高内存命中率。...这就是所谓的swap insanity 现象。或导致性能急剧下降。...Node->Socket->Core->Processor 随着多核技术的发展,将多个CPU封装在一起,这个封装被称为插槽Socket;Core是socket上独立的硬件单元;通过intel的超线程HT...的使用 显示格式: Architecture:架构 CPU(s):逻辑cpu颗数 Thread(s) per core:每个核心线程,也就是指超线程 Core(s) per socket:每个cpu插槽核数
此外,L3 Cache是被一个Socket上的所有CPU Core共享的,其实最早的L3 Cache被应用在AMD发布的K6-III处理器上,当时的L3 Cache受限于制造工艺,并没有被集成到CPU内部...SMP架构近几年迅速在PC领域(X86)发展,一个CPU芯片上集成的CPU核心数量越来越多,到2017年,AMD的ZEN系列处理器就已经达到16核心32线程了。...但是,随着CPU核心数量的不断增长,SMP架构也暴露其天生的短板,其根本瓶颈是共享内存总线的宽带无法满足CPU数量的增加,同时,一条「马路」上同行的「车」多了,难免陷入「拥堵模式」。...下面详细分析一下NUMA技术的特点。首先,NUMA架构中引入了一个重要的新名词——Node,一个Node由一个或者多个Socket组成,即物理上的一个或多个CPU芯片组成一个逻辑上的Node。...NUMA技术也会推进基于多进程的高性能单机分布式系统的发展,即在4个Socket、每个Socket为16Core的强大机器里,只要启动4个进程,通过NUMA技术将每个进程绑定到一个Socket上,并保证每个进程只访问不超过
逻辑CPU:一般情况,我们认为一颗CPU可以有多核,加上intel的超线程技术(HT),可以在逻辑上再分一倍数量的CPU core出来; 逻辑CPU数量 = 物理CPU数量 x CPU cores x...在多核 CPU 结构中,每个核心有各自的L1、L2缓存,而L3缓存是共用的。如果一个进程在核心间来回切换,各个核心的缓存命中率就会受到影响。...而进程与 CPU 绑定被称为: CPU 亲和性 。 将关键服务或进程绑定到一个核心上,其他进程避开该核心,可以保证关键服务(比如配置下发服务进程、监控进程等)顺畅执行没有卡顿。...个worker进程,第一个进程绑定到系统的第一个逻辑处理器,第二个进程绑定到系统的第二个逻辑处理器,以此类推。...其中第一个进程绑定到cpu0/cpu2,第二个进程绑定到cpu1/cpu3。
片内共享L3 cache结构:随着处理器芯片上的可用存储器资源的增长,高性能的处理器甚至把L3 cache也从处理器片外移至片内。...在片内私有L2 cache结构的基础上增加片内多核共享L3 cache使存储系统的性能有了较大提高。下图给出了这种结构的示意。 ? 存取速度比较:L1缓分成两种,一种是指令缓存,一种是数据缓存。...L2缓存和L3缓存不分指令和数据。L1和L2缓存在第一个CPU核中,L3则是所有CPU核心共享的内存。L1、L2、L3的越离CPU近就越小,速度也越快,越离CPU远,速度也越慢。...Cache结构 总线共享Cache结构是指多核处理器内核共享L2 Cache或L3 Cache,片上处理器内核、输入/输出接口以及主存储器接口通过连接各处理器内核的总线进行通信。...在UMA架构下,所有的内存访问都被传递到相同的共享内存总线上,不同的处理器访问存储器的延迟时间相同,任何一个进程或线程都可以被分配到任何一个处理器上运行。
另外,你也会注意到,L3 Cache 比 L1 Cache 和 L2 Cache 大很多,这是因为 L1 Cache 和 L2 Cache 都是每个 CPU 核心独有的,而 L3 Cache 是多个 CPU...程序执行时,会先将内存中的数据加载到共享的 L3 Cache 中,再加载到每个核心独有的 L2 Cache,最后进入到最快的 L1 Cache,之后才会被 CPU 读取。...而现代 CPU 都是多核心的,进程可能在不同 CPU 核心来回切换执行,这对 CPU Cache 不是有利的,虽然 L3 Cache 是多核心之间共享的,但是 L1 和 L2 Cache 都是每个核心独有的...在 Linux 上提供了 sched_setaffinity 方法,来实现将线程绑定到某个 CPU 核心这一功能。...,进一步提高执行的效率; 另外,对于多核 CPU 系统,线程可能在不同 CPU 核心来回切换,这样各个核心的缓存命中率就会受到影响,于是要想提高进程的缓存命中率,可以考虑把线程绑定 CPU 到某一个 CPU
通过将 CPU 核心编号写入 cpuset 子系统中的 cpuset.cpus文件中或将内存 NUMA 编号写入 cpuset.mems文件中,可以限制一个或一组进程只使用特定的 CPU 或者内存。...在 NUMA 下,处理器访问它自己的本地内存的速度比非本地内存(内存位于另一个处理器,或者是处理器之间共享的内存)快一些。现代多核服务器大多采用 NUMA 架构来提高硬件的可伸缩性。...相同 NUMA Node 上的 CPU 可以共享 L3 cache,同时访问本 NUMA Node 上的内存速度更快,跨 NUMA Node 访问内存会更慢。...Bind 这个插件用于将 Pod 绑定到节点上。...,该文件记录了节点上所有 Pod 的核心绑定结果。
昨天在群里有朋友问:把进程绑定到某个 CPU 上运行是怎么实现的。 首先,我们先来了解下将进程与 CPU 进行绑定的好处。...进程绑定 CPU 的好处:在多核 CPU 结构中,每个核心有各自的L1、L2缓存,而L3缓存是共用的。如果一个进程在核心间来回切换,各个核心的缓存命中率就会受到影响。...cpusetsize:mask 参数所指向的 CPU 集合的大小。 mask:与进程进行绑定的 CPU 集合(由于一个进程可以绑定到多个 CPU 上运行)。...例如,将 cpu_set_t 的第0位设置为1,表示将进程绑定到 CPU0 上运行,当然我们可以将进程绑定到多个 CPU 上运行。...所以,从上面的信息中可以分析出,要将进程绑定到某个 CPU 上运行,只需要将进程放置到其所属的 可运行进程队列 中即可。
NUMA架构是非对称的,每个NUMA node上会有自己的物理CPU内核,以及每个NUMA node之间也共享L3 Cache。同时,内存也分布在每个NUMA node上的。...右图中,CPU开始的访问速度是不一样的。 如果程序都跑在同一个NUMA node上,可以更好地去共享一些L3 Cache,L3 Cache的访问速度会很快。...如果L3 Cache没有命中,可以到内存中读取数据,访存速度会大大降低。 因此,从CPU体系结构中可以看到,如果采用一些错误的CPU分配方式,可能会导致进程访存速度急剧下降,严重影响应用程序的性能。...,可以使用节点的Default CPU共享池; NUMA:让CPUSet固定到NUMA node上的共享池内; Immovable:将CPU内核心固定,让其他Pod也可共享。...在CPU内核心选择策略上: 首先,按照调度结果获取NUMA node上需分配的核心数; 随后,从共享池中选择可分配的CPU内核心; 同时,还希望一个Pod尽量不使用在同一个物理核上的逻辑核。
领取专属 10元无门槛券
手把手带您无忧上云