自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 设计模式和代码重构

当整个项目越来越复杂,我们基本上想到要提高一下代码质量了。网上一顿寻找,设计模式GOF,代码重构可以帮我们解决现有的问题,然后一顿操作下载几篇PDF,看了几遍发现自己的代码也还可以不是很差,或者在代码中增加点模式。我觉得大部分都是这样的。我也不例外。最近看了点面向对象设计的书籍,有些感悟,绝大部分都想清楚类的GRASP问题,代码的质量就已经很好了。...

2021-04-08 10:08:23 125

原创 谈谈对unikernel的一点想法

目前来说unikernel也只是在云计算中guest的一种探索罢了,就好像container出来的时候谁也没想到现在这么实用。 云计算要适合各种app,我想没有一种os是万能的,只是在特定的场合适用吧了,所以我们更要客观点,并抱着发展的眼光去看待未来的os。 至少unikernel帮我们找到了一条路,与其在目前的os下没有突破性,为什么打破现有再重来呢。我们想象下未来的几种应用(5G, I

2016-10-24 10:14:59 817

翻译 Single address spaces: design flaw or feature? part1

unikernel运行与单地址空间, 这个地址通常有hypervisor提供, 但是并没有推荐你不能运行单个unikernel在裸的cpu上(虚拟化的情况下)。 伴随着unikernel被越来越多的人熟悉, 我看到一些人提出单地址的设计的选择并不好。 不幸的是,许多unikernel的文章的并没有充分解释清楚单地址在MMU中的有点。 接下来第一部分我会解释使用单地址的性能有点和一些高性能的no

2016-10-09 16:14:57 311

原创 docker real-time performance

env:  非RT-kernel 4.4root@ubuntu-daisy:~# cat /proc/cmdlineBOOT_IMAGE=/boot/vmlinuz-4.4.0-36-generic root=UUID=efd67e19-78b1-41ca-bf3f-353fc44c015a ro isolcpus=1-35 irqaffinity=0 clocksource=tsc ts

2016-09-13 09:09:48 656

原创 如何在一台机器上起多个osv vm

在一台机器上起多个osv,需要注意的是为虚拟机设置mac地址,要不然每次起虚拟机的时候都是相同的默认mac,造成获取的IP地址相同root@bamboo-VirtualBox:~/osv# ./scripts/run.py -nv --novnc --nogdb --verboseOSv v0.24-90-gabf49c04 CPUs detectedFirmware ve

2016-06-06 16:35:59 582

原创 osv 编译的image在不同机器上运行(同一个操作系统)

我们使用上文中的cpp-example app直接拷贝image到其他机器上,执行start_vm.sh脚本,注意需要通过brctl 配置virbr0 interface,你也可以通过安装libvirt来实现。osv本身提供capstan来管理imageroot@bamboo-VirtualBox:~/test# ls -al /root/osv/build/last/usr.img-

2016-05-10 09:41:43 568

原创 osv 添加自己的c++ app程序

cd ~/osv/appsmkdir cpp-exampleroot@bamboo-VirtualBox:~/osv/apps/cpp-example# cat Makefilemodule: hello_world.soCFLAGS = -g -fPICCC = g++%.o: %.cpp        $(CC) -c $(CFLAGS) -o $@ $

2016-05-10 09:33:24 303

翻译 OSv—Optimizing the Operating System for Virtual Machines 5

shrinker: shrinker API允许app或者OS组件注册回调函数, 这些函数OSv在当系统内存过低的时候调用。这些回调函数会释放一些组件或者app的内存。在大多数的OS, app, 包含动态cache的组件, 比如Memcached 或者 VFS 页缓存 ,这些必须静态限制他的尺寸,为了预先定义一些数量的内存或者一定数量cache大小。这是重要的,但有时候却是矛盾的, 不消耗

2016-04-27 10:28:14 572

翻译 OSv—Optimizing the Operating System for Virtual Machines 4

Effiicient  由于scheduler的可伸缩性, OSv可以添加一些其他技术让调度器和上下文切换更有效,下面罗列下几个1: OSv 使用的单个地址空间,这就意味在上下文切换的时候不会造成页交换或者flush TLB2: X86_64 ABI已结保证了FPU寄存器被安全调用,所以我们不用处理FPU的状态, 解释下,唤醒一个sleeping线程在不同的cpu需要IPI, 这个花费

2016-04-25 15:33:59 459

翻译 OSv—Optimizing the Operating System for Virtual Machines 3

2.3 network channels每个云操作系统必须提供高可用的TCP/IP协议栈, OSv实现的是依据Van Jacobson’s net channelideas [10]从图a, 所有的中断内容(硬中断和软中断)和程序(packets)内容的处理都在网络协议栈,这就造成在大量socket连接及数据处理时了内容访问和数据共享之间的lock、cache line的竞争,导致

2016-04-21 10:30:57 549

翻译 OSv—Optimizing the Operating System for Virtual Machines 2

OSv的核心是用c++ 11写的,包括OSv loader,dynamic linker,memory management, thread scheduler, synchronization机制,虚拟硬件驱动。OSv的小部分传统的驱动是有hypervisor是实现的(VGA, SATA...),自己又编写的部分驱动提高性能(clock, NIC,block)OSv支持虚拟化文件系统,但

2016-04-19 16:45:42 802

翻译 OSv—Optimizing the Operating System for Virtual Machines 1

按照接下来的趋势,云计算中vm应该只运行一个app,所以某些现在有的一些操作的系统的功能变成了累最或者重复了,1:资源的隔离hypbervisor已经提供,所以并不需要操作系统kernel再提供资源隔离的功能。2:重复的硬件资源虚拟化,普通的操作系统供过添加一个抽象层来访问资源(如读写不同格式的磁盘),但是在云计算中,资源已经是虚拟化了。所以我们要探索什么样的操作系统适合云计算

2016-04-16 15:05:37 624

原创 osv kernel 内存初始化管理

参考https://github.com/cloudius-systems/osv/wiki/Managing-Memory-Pages普通的linux内核的内存操作通过建立内存池,通过slab来动态申请和释放。osv 通过配置每个cpu固定的pages buffer,通过简单的stack数据结构来申请和释放,实现简单竞争性也少。但具体性能怎么样没测试对比过还不清楚,当然也因为osv设

2016-04-14 15:15:59 489

原创 osv main启动流程分析

参考https://github.com/cloudius-systems/osv/wiki/OSv-lzloader-and-early-loader该文章还是说明的比较清楚的,我只是提一下我自己的学习流程。学习osv,当然得知道osv怎么加载kernel的,所以找到了上面这篇文章,通过这篇文章也学了好多。我简单的说一下我认识到的启动流程:1:boot.s  设置一下ke

2016-03-31 10:56:05 591

原创 osv 编译和执行单个apps分析

osv project makefile生成loader.img,  不过这个makefile比较复杂,具体生成这个image的详细流程,以后看完或者看懂后再写。这应该是个base image(dirosv/build/release.x64), 这个image就是上一篇文章中提到的,操作系统启动中的image$(out)/loader.img: $(out)/preboot.bin $(ou

2016-03-30 10:30:37 691

原创 学习osv原理需要操作系统启动流程

1.BIOS加电自检:    计算机启动后,首先会进行固件(BIOS)的自检,即所谓的POST(Power On Self Test),然后把保存在MBR(Master Boot Record,主引导记录)中的主引导加载程序放到内存中。2.加载主引导加载程序(MBR):    主引导加载程序通过分区表查找活动分区,然后将活动分区的次引导加载程序从设备读入内存中并

2016-03-29 13:55:29 935

原创 osv gdb 的使用

1: echo "add-auto-load-safe-path scripts/loader.py" > ~/.gdbinitloader.py脚本主要是告诉gdb怎么connect guest(default port 1234)2: 启动gdb gdb build/release/loader.elf 编译启动guest ./scripts/build image=iperf

2016-03-10 13:39:37 737

原创 OSV的初体验

http://osv.io/, 上面有讲一下design,但都比较零散,我也只是大概的看了下。当打开https://github.com/cloudius-systems/osv/wiki感觉还不错,可能以前用github比较少的原因吧,以后个人的project可以放到这上面来,还有markdown也不错,准备学习下。下面是我开始接触OSV的一些过程。首先我git clone了osv-

2016-02-16 15:06:41 1210

原创 我和osv 的奇遇

年前的时候突然看到CSDN上有关于云操作系统的文章http://blog.csdn.net/halcyonbaby/article/details/19047813, 突然感觉这就是自己正在寻找的东西。从最近一年多在intel接触的虚拟化以及看了些相关的数据,目前server端的虚拟化并没有突破传统。当然server端的虚拟化包括好多,我指的是guest方面的,image还是用以前的linux o

2016-02-16 14:52:18 497

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除