• client-go 中指数退避 backoff

    指数退避算法退避简单来说,就是客户端的重试策略。常用的退避策略有, 固定退避,特点是每次重试间隔固定,简单可预测,大量客户端同时重试,可能造成更大的重试风暴。 线性退避,特点是重试间隔线性增加固定,比如间隔为 1,2,3,4,5… 指数退避,特点是...
  • kubeadm 公网环境搭建 kubenetes 集群

    环境介绍最近手里闲置了两台云服务器,准备搭建一个公网环境下的 Kubenetes 集群,平时可以利用这个环境学习测试 k8s。公网搭建和本地搭建核心流程区别不大,要注意的是机器的公网IP以及在安全组里放行 kubenetes 组件必要的端口。 ...
  • 调试 libvirt 启动的 VM

    上篇,我们介绍了如何使用 qemu 启动内核并对其进行 debug。如今,很多云服务器都是通过 libvirt/qemu 启动的。本文就着手介绍,如何调试由 libvirt 启动的 linux 内核。 xml 添加 -s 参数<dom...
  • 修改重新封装 Linux ISO

    请注意:本文档旨在帮助您根据现有的 ISO 来创建一个 自定义的ISO文件。如果您希望从零开始,可以参考OpenCloudOS ISO镜像构建项目, https://gitee.com/OpenCloudOS/ocs_lorax_build_ima...
  • xv6 Lab6: Multithreading

    这个实验是熟悉多线程。需要实现在一个用户态的线程切换,使用多个线程来加速程序,并实现一个屏障。 uthread打开 user/uthread.c 文件,观察 uthread 的数据结构以及部分函数实现能帮我们快速理清思路。 关键实现stru...
  • xv6 Lab5: COW

    Lab5 的任务是在 xv6 内核中实现 COW fork。叫做 lazy fork 也行。 Implement copy-on-write fork关键实现struct kmem在 struct kmem 结构体中引入引用计数成员。 struct ...
  • xv6 Lab4: Traps

    Lab4 实现用户态 trap 处理,集中在返回用户态的中断上下文保存,很类似 signal 处理。 RISC-V assembly主要是一些基础知识。 Which registers contain arguments to functions?...
  • xv6 Lab3: page tables

    Page table 使用用来映射进程虚拟地址到物理地址。有了 pagetable 进程看到的是虚拟地址,对操作系统来说,有了 pagetable,可以实现更多的管理面的控制,Isolating,Guarding and etc. Speed up ...
  • xv6 Lab2: system calls

    Lab2 实现 2 个 syscall。 Using gdb第一部分是了解使用 gdb 调试 xv6(我使用的是 Debian) # 其中一个窗口启动 qemu-gdbcd xv6-labs-2023make qemu-gdb# 新开另一个窗口,连接...
  • xv6 Lab1: Xv6 and Unix utilities

    Lab1 为 xv6 实现用户态程序。 sleep写第一个程序,主要的体会就是懵。不知道从哪下手,在看了内核态的对应实现,看了用户态 kill.c 的实现后,理清思路后,才发现 sleep 其实很简单。 #include "kernel/t...
/3