avatar
文章
87
标签
0
分类
12
归档
分类
照片
关于
搜索
CodeTalks
搜索
归档
分类
照片
关于
搜索

CodeTalks

OpenStack Ironic 裸金属服务搭建
发表于2022-07-19|编程分享
实验室有二十台 R740 服务器给大家用,由于涉及到内核以及硬件方面的实验,时间一长的话不同服务器上的环境就很混乱,运维管理也很麻烦,并且虚拟化不适合我们的场景。之前 OSDI 22 AE 提供了 https://cloudlab.us 的账号,这个网站上面就是像虚拟机一样使用物理机器,可以自由组网、选择操作系统镜像直接启动、给服务器做镜像等,体验相当不错。但是他们的系统并不开源,所以我想看看有没有办法用开源的软件像他们一样直接管理裸金属服务器。 OpenStack Ironic 就是基于 OpenStack 生态的裸金属计算服务,但是网上资料比较少,虽然官方文档已经很详细了,但是针对到...
现代 CPU 微架构入门
发表于2022-05-24|编程分享
这篇文章是 Processor Microarchitecture An Implementation Perspective 的读书笔记。虽然这本书是 2011 年出版的,讲的东西都已经有点过时了,但是作为一个入门 CPU 微架构的材料还是不错的。对于程序员来说了解 CPU 的工作原理也有助于写出更高性能的代码,充分发挥硬件性能。 在大学本科里学习的计算机组成原理一般是顺序执行标量五级流水线的 CPU,但是在现代的高性能 CPU 中,在一个时钟周期里不同的执行部件可以有多条指令同时执行(例如同时执行两个整数加法)。另外,CPU 也有可能乱序执行程序的指令(在没有数据依赖的情况下)。而在...
天空计算——多云时代的分布式计算
发表于2022-05-20|编程分享
Berkeley 的 RISELab 最近又搞了个大新闻,在 The Sky Above The Clouds 论文中提出了 Sky Computing 的概念。总的来讲,尽管目前市场上有许多云服务可供选择,但是不同云服务使用的 API 不同,数据在不同云服务之间迁移也很麻烦,需要用户自己处理数据的迁移和不同云服务 API 调用的编写。为了更方便地使用不同云服务厂商的优势服务,需要有一个中间层来连接不同的云服务,并向用户提供一个统一的 API 来描述任务,由中间层来负责在不同云之间调度服务。 举个例子,如果用户想使用脱敏的线上数据训练一个机器模型并部署,那么他可以先在 Azure 云上进...
系统设计中的端到端原则
发表于2022-05-19|编程分享
End-To-End Arguments in System Design 提出在系统设计中,将一些功能放到底层实现可能是没有价值甚至多余的,相比起实现它们的成本而言。相反,只有终端的应用知道自己的具体需求是什么,无论怎么样都需要在终端的应用中实现相同的功能。在底层实现的功能往往只能起到提高性能的作用。 因为底层的抽象层往往对上层应用细节不了解,如果提供太多功能,那么所有使用到的应用都需要负担额外的开销,哪怕实际上它们并不需要相关的功能。而且,有时候底层实现的功能可能核应用的需求不符合,这时候应用反而需要想办法绕过或者修改底层,来实现自己的功能。哪怕底层的功能确实是应用所需要的,其提供的...
使用协程提高流水线利用率
发表于2022-05-12|编程分享
CppCon 2018: G. Nishanov “Nano-coroutines to the Rescue! (Using Coroutines TS, of Course)” 的笔记。 无栈协程切换的开销很小,几乎等于一次函数调用,而在 LLC Miss 的时候,访问内存通常需要 60 ns 以上的延迟,而如果访存命令后的命令都依赖于访问的数据,那么此时 CPU 流水线就被阻塞了,无法充分并行执行指令。而 CPU 通常提供了 prefetch 指令,内存系统也提供了一定程度的并行度,可以先发出预取命令,然后切换到其他的请求执行,使得多个访存指令重叠,充分利用流水线。这时候协程也可以...
内存系统的实现细节
发表于2022-05-11|编程分享
The Memory System: You Can’t Avoid It, You Can’t Ignore It, You Can’t Fake It 和 Innovations in Memory System 是 Synthesis Lectures on Computer Architecture 系列中关于内存的两本书。这篇文章总结了一些内存系统的细节。 内存条通常没有什么计算能力,只是作为内存控制器的一个从设备。内存控制器连接到主板上的内存通道(平时装机说的双通道就是内存通道),一个内存通道由地址/命令线和数据线组成。地址/命令线是单向的,从内存控制器到...
协程:Rust 与 C++ 20
发表于2022-05-11|编程分享
这篇文章主要讲了当前流行的异步编程以及协程语法在 Rust 和 C++ 的基本应用,怎么封装自己的协程,以及有哪些实现细节需要注意。 协程出现的时间其实很早,最早的操作系统运行程序就是使用协程的方式,这个时候操作系统和应用程序互相协作,处于平等的地位,如果应用程序不主动返回到操作系统,那么操作系统将永远没有机会执行其他操作。 协程其实是一个比较宽泛的概念,粗略地讲,普通函数调用后,所有的局部变量都会销毁,也无法保存状态,而协程在返回之后,会保持自己的状态,在下次调用的时候,可以根据这个状态从函数的中间继续运行。例如,编译器中的词法分析器(Lexer),在每次调用之后都会根据当前的分析状态...
Paxos 后传——小岛历史的延续
发表于2022-05-03|编程分享
Paxos 本身以晦涩难懂而闻名,更不要说对它的优化了。为了破除大家心中的阴影,UCB 的几个大佬在 Journal of Systems Research 期刊上发表了 SoK: A Generalized Multi-Leader State Machine Replication Tutorial 的论文。这篇文章也是我对这篇论文的阅读笔记了。 https://mwhittaker.github.io/frankenpaxos/ 有不同 Paxos 算法的动画演示。 概览自从 Lamport 老爷子提出 Paxos 算法以来,许多工程师和学者都投入到对这个算法的实现和改进的工作中。...
Linux 内核模块调试方法
发表于2022-03-19|编程分享
调试内核模块和调试 Linux 程序本身差不多,都可以使用 gdb + qemu 来调试,也可以使用 Linux 内核自带的 kgdb 工具调试。不过因为内核模块是动态加载的,需要 add-symbol-file 来指定模块的加载地址。 使用 kgdb 调试需要使用到串口进行通信。可以在 qemu 启动系统的时候加入参数 -serial tcp:localhost:4321,server,nowait,将内核的串口设备映射到本机 tcp 连接上,然后编辑 /etc/default/grub 在系统启动参数里加入 kgdboc=ttyS1,115200 nokalsr ,并运行 sudo ...
托福备考经验分享
发表于2021-12-10|大学学习
tl; dr 纯自学托福 108(R29+L30+S23+W26) ,大约零散准备三周,做了十套阅读、听力,两套写作,五套口语,写作和口语没有找人批改 本人四六级裸考分别 647、561,对照你的水平来预估准备时间 这只是一个语言考试,有应试技巧,有策略地分配你的备考时间 尽可能搜集免费的资料 上考满分做 TPO,务必限时 阅读或听力有加试题 听力是重中之重,听力能力会很大程度上影响你的成绩 会听,更要会记 口语写作要提前准备模板、例子和理由,但不能生搬硬套 有条件的要找人批改口语写作 写作避免犯低级错误,尤其是定冠词 提升打字速度 合理利用 TPO,但也别迷信 写在前面2021 年 ...
123…9
avatar
howardlau
记录想法
文章
87
标签
0
分类
12
GitHub
最新文章
DeepSeek 3FS 源码解读——客户端篇2025-03-16
DeepSeek 3FS 源码解读——RPC 篇2025-03-03
DeepSeek 3FS 源码解读——磁盘 IO 篇2025-03-02
DeepSeek 3FS 源码解读——协程&RDMA篇2025-03-01
分布式存储入门学习路线2025-01-17
分类
  • DeeCamp 20181
  • IT 杂谈2
  • Uncategorized1
  • 大学学习9
    • ucore8
  • 机器学习7
  • 游戏推荐2
  • 科普3
归档
  • 2025 年 03 月 4
  • 2025 年 01 月 1
  • 2023 年 09 月 1
  • 2023 年 08 月 1
  • 2022 年 08 月 3
  • 2022 年 07 月 1
  • 2022 年 05 月 7
  • 2022 年 03 月 1
网站信息
文章数目 :
87
最后更新时间 :
© 2017 - 2026 By howardlau
粤 ICP 备 17129444 号-1
搜索
数据加载中