Scalable Go Scheduler Design Doc 中文翻译

原文链接:https://golang.org/s/go11sched 以下是原文 Scalable Go Scheduler Design Doc Dmitry Vyukov dvyukov@google.com May 2, 2012 该文档假定您对Go 语言 和当前的 goroutine 调度程序实现有一定的了解。 当前调度程序的问题 当前的 goroutine 调度器限制了用 Go 编写的并发程序的可扩展性,特别是高吞吐量服务器和并行计算程序。 Vtocc 服务器在 8 核机器上最多可使用 70% 的 CPU,而性能分析显示 14% 用于runtime.futex(). 通常,调度程序可能会禁止用户在性能至关重要的情况下使用惯用的细粒度并发。 当前实现有什么问题: 单一全局互斥锁(Sched.Lock)和集中状态。互斥锁保护所有与 goroutine 相关的操作(创建、完成、重新调度等)。 Goroutine (G) 切换 (G.nextg)。工作线程 (M’s) 经常在彼此之间切换可运行的 goroutine,这可能会导致延迟增加和额外开销。每个 M 必须能够执行任何可运行的 G,尤其是刚刚创建 G 的 M。 每个M内存缓存(M.mcache)。内存缓存和其他缓存(堆栈分配)与所有 M 相关联,而它们只需要与 M 正在运行的 Go 代码相关联(在 syscall 内部阻塞的 M 不需要 mcache)。运行的 Go 代码的M 与所有 M 之间的比率可以高达 1:100。这会导致过多的资源消耗(每个 MCache 最多可吸收 2M)和较差的数据局部性。

go源码编译

学习go的源码编译 下载源码仓库 git clone git@github.com:golang/go.git 我选择了其中一个分支 release-branch.go1.18 git checkout release-branch.go1.18 目录结构 $ tree -d -L 2 . ├── api ├── bin ├── doc ├── lib │ └── time ├── misc │ ├── android │ ├── arm │ ├── cgo │ ├── chrome │ ├── ios │ ├── linkcheck │ ├── reboot │ ├── swig │ ├── trace │ └── wasm ├── pkg │ ├── darwin_arm64 │ ├── include │ ├── obj │ └── tool ├── src │ ├── archive │ ├── bufio │ ├── builtin │ ├── bytes │ ├── cmd │ ├── compress │ ├── container │ ├── context │ ├── crypto │ ├── database │ ├── debug │ ├── embed │ ├── encoding │ ├── errors │ ├── expvar │ ├── flag │ ├── fmt │ ├── go │ ├── hash │ ├── html │ ├── image │ ├── index │ ├── internal │ ├── io │ ├── log │ ├── math │ ├── mime │ ├── net │ ├── os │ ├── path │ ├── plugin │ ├── reflect │ ├── regexp │ ├── runtime │ ├── sort │ ├── strconv │ ├── strings │ ├── sync │ ├── syscall │ ├── testdata │ ├── testing │ ├── text │ ├── time │ ├── unicode │ ├── unsafe │ └── vendor └── test ├── abi ├── alias3.

创建自己的github博客

初始化 准备工作 work flow github page github page hugo hugo官网 教程 如何使用Hugo在GitHub Pages上搭建免费个人网站 自动化教程 Hugo使用Github Action自动部署博客到Github Pages 配置主题 选择 LoveIt主题 https://github.com/dillonzq/LoveIt 文档 https://hugoloveit.com/zh-cn/theme-documentation-basics/ 设置网站logo 设计logo 代码来源 https://github.com/kasuganosoras/logo-maker 生成logo图片网站 https://logomaker.akkariin.com/youtube.html or 自己魔改透明背景 设计完之后 利用logo图片生成Favicon https://favicon.io/ 配置网站Favicon 将favicon_io.zip 文件解压到 ./static/下 配置网站logo 配置 config.toml [params.header.title] logo = "/images/your logo.png" logo的真实位置在 ./static/images/your logo.png 设置SEO google google search console https://search.google.com/search-console/about bing bing Webmaster https://www.bing.com/webmasters/about