Back

mit-6.824 lab0: Preface

一些前言以及总结

前言

21年的3月份,大三下学期,我收到了一份暑期实习的offer。需要提前学习一下go语言,之后在某学长的安利下我了解到了mit-6.824这门课程,他建议我做一下这门课的4个lab就当实践一下go。不过我配好环境后就去浪了2333,也就断断续续的在b站上看了几期课的视频。

真正开始写lab还是暑假实习在公司摸鱼的时候开始的,当时还拉着旁边组的一个实习生一起写相互交流进度。不得不说,课程、论文和lab真的都是非常非常的硬核(虽然我论文只大概看了前几篇),分布式系统这个领域也真的是非常非常的有趣,比学校里学的东西不知道高到哪里去了。暑假结束时还只写完了lab2,lab3只写了一点点,之后由于搞完秋招后一直在玩,年底又去写PingCAP talent-plan的tinykv了(这个也挺有意思的,也更贴近工业界,可惜文档给的太少,与之相比6.824的实现就像个玩具)导致进度很慢,最终22年1月中旬才全部写完。

最近(毕业之前)我应该会将整理完所有的文档、实现思路发出来,也锻炼一下自己写技术文章的水平。

一些资料

我的实验配置

  • win10 + wsl2 + ubuntu 20.04
  • 16G内存
  • go version 1.15

课程网站

6.824 Schedule: Spring 2021

用于并发测试的脚本

#!/bin/bash
rm -rf tmp-$1
mkdir tmp-$1

start_time=$(date + %s)
[ -e /tmp/fd1 ] || mkfifo /tmp/fd1
exec 3<>/tmp/fd1
rm -rf /tmp/fd1
# 同时执行 10 个线程,依照cpu核心数视情况而定
for ((i = 1; i <= 10; i++)); do
  echo >&3
done

for ((i = 1; i <= 500; i++)); do
  read -u3
  {
	touch ./tmp-$1/report_$i.log
    go test -run $1 -race > ./tmp-$1/report_$i.log
	s=$(tail -n 1 ./tmp-$1/report_$i.log)
	if [ ${s:0:2} == 'ok' ]
	then
		rm ./tmp-$1/report_$i.log
	else
		echo "test $i Failed"
	fi

    echo >&3
  } &
done
wait

stop_time=$(date +%s)

echo "TIME:$(expr $stop_time - $start_time)"
exec 3<&-
exec 3>&-
Built with Hugo
Theme Stack designed by Jimmy