Practical Byzantine Fault Tolerance(PBFT)

原文

性能优化 Critical Dependency Chains

在体系结构中,只有RAW(read after write) data hazard叫做true dependency,意味着后续读指令必须等待前面的指令输出结果。而WAW,WAR等情况都可以用寄存器重命名的方法解决。

Reading list

(不代表都仔细看过)

计算机网络

1. 网络调优

Raft

raft资料 https://raft.github.io/

The Part-Time Parliament (Paxos)

1. The Problem

Rust Undifined Behavior

小心UB,使用unsafe的时候多看接口文档

Rust编译选项及配置

不关注实现,记录如何更好使用rust编译器,或者记录一些和编译相关有用的工具。

Rust潜规则

一些类型系统之外的规则,比如Box::new()是在堆上创建变量,但如果只看函数签名pub fn new(x: T) -> Self,其实是看不出来这个规则的,这些规则只会在文档中说明。

low latency tunning

一些资料

Linearizability: A Correctness Condition for Concurrent Objects

评价: Linearizability用时间将不同的process联系起来,是比SC更严格的一致性模型,也更符合现实生活。此外,linearizability具有组合性。

Hazard Pointers

了解hazard pointer,在阅读 Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects 之前,先阅读其用来举例的文章 Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms,之后可以做 https://github.com/kaist-cp/cs431 ,其中有一个编程作业就是简单版的hazard pointer,要求代码放在私有仓库,所以我的代码没有公开。

Linux Kernel Development

原书: Linux Kernel Development (3rd Edition)

A Primer on Memory Consistency and Cache Coherence

原书: A Primer on Memory Consistency and Cache Coherence

Algorithm

更关注算法的证明,用起来才安心。

MODERN PROCESSOR DESIGN

书名: Modern Processor Design: Fundamentals of Superscalar Processors

Redis

事务

Memory System

1. 对程序性能的疑惑

公开课 Computer Architecture

课程网址 虽然标题是Computer Architecture,但这个课程和本科的体系结构课不太一样,主要关注更现代的技术,而不局限于经典的5级流水CPU设计。

Misc 你知道吗?

记录一些想到的问题

Performance Engineering Of Software Systems

课程主页: link

阅读 C++ Concurrency in Action

不深究C++语法细节,更多关注与Rust的共性部分。

简单理解 Thread Local Storage

无论是百度还是谷歌,如果直接搜索 “thread local”,出来的页面大部分都是讲 Java 的 ThreadLocal<T> 类,然后讲变量是存储在了 ThreadLocalMap 里。但是,本文要介绍的是由编译器、链接器和操作系统等联合提供的 thread local storage(TLS)功能 ,由于和硬件,操作系统有关,只关注 x86-64 为基础的 Linux ELF 格式。

PostgreSql一些记录

操作

The Byzantine Generals Problem

1. INTRODUCTION

CMU15-445 2021 Fall bustub实验记录

每个人的实现可能不同,因此对某些问题的理解也会不同,这里只是说明我自己的理解。

Kademlia: A Peer-to-Peer Information System Basedonthe XOR Metric

推荐读paper前先看这个,非常好地解释了XOR的来源

阅读 Time, Clocks, and the Ordering of Events in a Distributed System

Introduction

Redis v6.2.0 server接收client命令

以standalone模式按默认配置启动redis-server,只考虑最基本的情况