从 E5-2690v4 的 NUMA 数量说起,浅谈 Broadwell 到 Skylake 的改进

TL,DR:

Broadwell 的 Cluster on die 和 Skylake 的 sub-NUMA cluster 设置会导致高核心 CPU 显示为两个 NUMA 节点,相关设置会影响缓存命中、延迟和内存访问延迟

Index

0,起因
1,简述架构的改进
2,Broadwell 上的 Snooping 和 COD
3,Skylake 和 SNC
4,其他的一些改进

起因:

某台机器(已知是双路)发现了四个 NUMA 节点: numastat 也显示出了程序的不同亲和性,

然而根据 Intel Ark ,2690 v4 最大支持两路,且每路为 35M L3,核心数和 L3 cache 显示的数量都恰好是 ark 的一半,因此对这个问题进行了一点调研,发现 Xeon Scalable 相比 Xeon E5v4 确实有比较大的改变不是挤牙膏,借此机会顺便深入了解了一些服务器 CPU 的架构,故有本文。

文中可能用到的几个缩写:Ivy Bridge 缩写为 IVB,Haswell 缩写为 HSW,Broadwell[……]

Read more

TL; DR:对软链进行 sed 请使用 sed -i --follow-symlinks ,否则软链会变成常规文件。

本来我已经很久不拿这种非常零散的点水一篇文章了但是由于这个坑我觉得无比愚蠢我决定上来吐槽一下

你们 Debian 特色的 nginx 配置文件分为 sites-available 和 sites-enabled,某次我对着 sites-enabled 来了一次 sed -i 之后又愉快的改 sites-available 配置文件然而 reload 谜之不生效,然后就发现软链都变常规文件了。

原因大致是 sed 会在内存里完成替换然后整个往文件里写进去,这个操作会改变文件的 inode 号,也默认没有判断软链。

RIP 纪念我被愚蠢的自己坑掉的一个小时。

EOF.

老鼠就不要对一只猫的仁慈抱有希望,尤其是那只猫曾经是老鼠 ——题记

写在前面

阅读本文可能需要关于 DNS 的基本知识,权威 DNS 和递归解析过程等参见先前的文章:浅谈 DNS 的解析

9月18日上午,各大社交网络开始盛传著名二次元同人画作社区 黄图网站 PIXIV 在大陆无法访问,各种说法甚嚣尘上,有说 P 站自主规制的,有说 P 站被墙的,也有认为是网络抽风的,实际上这个问题要判断到底是哪边的问题是比较简单的,所谓实践出真知,让我们来试着判断一下 P 站为什么会无法访问

关于 P 站情况的分析

首先来看看国内访问是什么情况:

这个响应有哪里不对呢?

  1. 向根服务器查询响应时间只有 23ms,你信吗( dig @ 会直接向指定 name server 查询,不受本地 DNS 设置影响,大陆往返根域名服务器是不可能在 23ms 内完成的)
  2. 对一个域名的根域(没有前缀的裸域名)查询 A 记录,如果所查 server 是对应域的权限,则[……]

Read more

原文链接:http://www.cio.com/article/3191344/linux/why-Docker-created-the-moby-project.html

译注:Docker 官推转发了这篇(算是钦定?)就看了一眼,本文以 Docker 公司一家之言的角度描述了为什么要推出 Moby,仅供参考。另外,文中的 Docker 既可以指容器管理程序也可以是公司,注意根据语境区分。

Moby 项目是一个让所有人都能组装自己的容器的框架,这是本文的背景。

成为主流,也肩负了责任——Solomon Hykes

Docker 在过去的两年里经历了指数级增长,DockerHub 的下载量从1亿增加到了60亿,为了保持这一增速,Docker 选择打破现有的一体化结构,分为更小的开源组件,包括 containerd, libnetwork, swarmkit, LinuxKit。

开源这些组件让 Docker 和 Docker 生态系统能基于这些组件进行更高效的协作,还能帮助 Docker 将自己的平台模块化和弹性化;尽管这也意味着 Docker 自己也必[……]

Read more

试玩 nginx mainline 1.13 的 TLSv1.3

大晚上的刷推发现 nginx 出了新的大版本更新(https://twitter.com/nginxorg/status/856896480497385473),一看 TLSv1.3 support,顿时吓清醒了,为啥这么厉害的特性官方博客都没一篇说明的(关于 TLS 1.3 的介绍建议阅读微信的 基于TLS1.3的微信安全通信协议mmtls介绍),后来发现原来1.11.x 的时候就偷偷加入的支持然而没有告诉你,我也是十分的无语。仔细看了一下 ngx_http_ssl_module 的文档:

The TLSv1.3 parameter (1.13.0) works only when OpenSSL 1.1.1 built with TLSv1.3 support is used.

OpenSSL 1.1.1,Arch 半天都没敢上1.1.0你跟我说1.1.1,去 OpenSSL 官网一看甚至还没 Release,感觉确实是太 bleeding edge 了不适合拿来用只适合拿来玩。nginx.org 的预编译包的 OpenSSL 版本是跟随对应发行版主源里的版本(非 backpo[……]

Read more