自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 computer microarchitecture之out-of-order execution

体系结构中处理器基本的一个五级pipeline, fetch -> decode ->execute->memory-> writeback。考虑到一些long latency的instruction,我们需要有很多in-flight的instruction来hide latency,要支持很高的instruction level parallelism,我们需要用到一种技术,称之为out-of-order execution。简单理解,就是指令执行的顺序跟program ord

2020-08-14 15:44:44 478

原创 opencv中初探neon

随着ARKit发布,手机端的图像识别及追踪功能越来越普及,诸多app都纷纷开动脑筋去做一些好玩的场景,这其中就离不开手机端的指令加速问题。最近刚开始研究arm neon,打算从Opencv现有的代码来扒一扒neon加速都被放在哪些地方,具体怎么实现的 Opencv的imgproc模块中有一个pyramids的文件,图像金字塔是图像多尺度的一种表达,将图片进行上采样或下采样得到一系列不同大小

2017-07-21 11:48:07 7179 1

原创 migrating from ia32 to arm digest

A porting checklistThe following list of points may prove useful when porting source code from IA-32 to ARM.·         Recompile C/C++ code using tools which target the ARM architecture. In general,

2015-10-26 17:02:51 587

原创 posted-interrrupt implementation

http://lists.xenproject.org/archives/html/xen-devel/2015-03/msg00570.html- Update posted-interrupt descriptor during vCPU schedulingThe basic idea here is:1. When vCPU's state is RUNSTATE_runnin

2015-08-14 11:57:53 1090

原创 用mprotect和sigsegv 调查内存异常的问题

static void segv_handler(int sig_no, siginfo_t *pt_siginfo, void *p_ucontext){        int i = 0;        //printf("enter segv handler\n");        if (sig_no == SIGSEGV) {                //pri

2015-08-12 15:05:34 1386

原创 MSI及interrupt remapping

简单记录下看的MSI相关的资料,方便后续查阅MSI的原理就是让pci设备通过写一个system-specific的消息到一个特定的地址区域(0xffe), 来传递中断消息。这里面需要借助两个寄存器message data register, message address register就是把data register的东西写到address register, data的0

2015-07-08 15:35:38 3200

原创 malloc的标志对性能的影响

malloc的参数配置对于性能的影响

2015-06-29 17:57:24 1577

原创 x86和arm对于锁实现的差异

x86和arm在锁实现上需要注意的区别

2015-06-29 17:26:20 4538

原创 opencontrail学习(一)

从某位大牛的微博上看到了对opencontrail的评价,引起了我的兴趣,点开有人为其翻译的中文文档学习了下,把之前一些零碎的东西,比较系统性地串起来了,感觉很爽,所以决定把src下下来八一八。下载了contrail-vrouter的代码,因为刚好在做底层类似的东西,可以对比学习下

2015-02-02 00:33:55 4355

原创 netback的tasklet调度问题及网卡丢包的简单分析

最近在万兆网卡上测试,出现了之前千兆网卡没有出现的一个现象,tasklet版本的netback下,vm进行发包测试,发现vif的interrupt默认绑定在cpu0上,但是vm发包运行时发现host上面cpu1, cpu2的ksoftirqd很高。从之前的理解上来说,包从netfront出来通过eventchannel notify触发vif的irq处理函数,然后tasklet_sch

2014-07-03 14:22:10 3184

原创 netback中kthread遇到的cpu affinity问题

最近在升级netback, 进行测试过程中,发现vm全双工压力下,rx的pps波动很厉害,看到rx kthread虽然cpu affinity是0-7 (dom0 8vcpu), 但是经常跑到物理中断的那个cpu上。手动把rx kthread的cpu绑定到其他cpu上,rx pps上去了,并且稳定了,显然rx 的pps波动就是因为cpu scheduling,被调度到不同的cpu导致。

2014-06-24 10:30:54 2002

原创 real-time scheduler in xen--sedf

大致看完scheduler_credit的代码后,开始想了解下其他的scheduler的实现,新的scheduler有credit2,老一点的有sedf, bvt之类。由于scheduler_sedf在3.0之后一直都存在代码中,就先来看看sedf吧。sedf--simple earliest deadline first, 从名字上来看类似于io scheduler里面的deadli

2013-12-17 14:31:39 1667

原创 xen credit scheduler and policy

最近在研究xen的vcpu 调度和cpu qos策略,现在默认的scheduler是credit, 对应的代码是sched_credit.cxen支持好几种控制策略,效果最好的当选pin, 灵活性最好的是weight, 控制和灵活兼备的就是cap,据说人家amazon在06年推ecu的时候就是用了类似的技术。pin的实现比较好了解,也就是set affinity,个人对cap,weight

2013-12-13 00:30:16 2875

原创 dom0的cpu hotplug【续】

上一篇说到,手动xm vcpu-pin住,在hotplug就好了。本质上,还是因为代码有bug,导致vcpu offline的时候,信息没有清理干净,有残留,当vcpu online的时候,如果调度到不是它之前的pcpu上,重建关系的时候就会出错。还说明了一个问题,如果dom0的vcpu的affinity没有pin住到最开始的pcpu上,那么hotplug后,pcpu可能变

2013-12-12 23:27:14 1473

原创 pv ticketlock解决虚拟环境下的spinlock问题

spinlock在非虚拟化的环境下,它是可以认为cpu不会被抢占的,所以A拿锁干活,B死等A,A干完自己的活,就释放了,中间不会被调度。但是在虚拟化下,cpu对应到vcpu, 每个vcpu跟之前裸机上的进程调度一样,所以A拿锁干活,并不一定不会被抢占,很有可能被调度走了,因为cpu这时候还不知道vcpu在干嘛。B死等A,但是A被调度了,运行了C,C也要死等A, 在一些设计不够好的系统里面,这样就会变得很糟糕。

2013-09-15 20:55:09 2329 1

原创 xend调用xenstore的出错揭秘

系统盘出错导致xend调用xenstore出错

2013-08-18 20:28:33 1593

原创 xen中dom0的cpu hotplug问题

之前在grub里面配置了一些参数,导致机器后续不能动态滴做一些调整,后续为了更好滴可扩展,打算试试cpu的hotplug功能。写了个简单的hotplug脚本,就echo 0 > /sys/device/system/cpu/cpu9/online 这类的, 一跑机器就hang住了,message里面有一些错误信息,诸如:ERROR: domain->groups does not contai

2013-07-23 16:06:59 1993

原创 sysbench压测directio+fsync时的问题

准备release一个新版本的kernel, 里面收了一些优化的patch和bugfix, 在regression 的时候,在dom0上用sysbench压测磁盘IO, 在多台VM上用ltp压测networkstress时,出现了kernel panic的问题,加一些warning的日志,由于几个corruption都在ext4_end_io_dio的地方,基本上可以定位到里面的list_add_tail有问题,大致有两处list_del_init的地方,一个在work func(ext4_end_aio

2013-07-17 21:53:18 2535 1

原创 ltp中networkstress 问题

今天被某同学说这个博客应该花点时间打理,才想起,确实好久没来这了,好吧,就吐槽下今天弄的ltp吧最近在整理regression case,理所当然要用到ltp啦。由于最近port了netback的多线程代码,需要用到network方面的case,所以就只关注了network这块初步的想法是先把networkstress.sh跑起来,现在dom0上调试了下,Ok的话,再移到VM里面

2013-07-02 21:02:08 1542

原创 xen multi page io ring

今年的Xen summit里,intel介绍了io性能调优方面的两个点,一个是multi page io ring,  更大的max_segment,另一个per-block lock。里面说的vm里面的io 性能损耗比原生的差了26%, 通过第一个点的调优,能够提高17%,加上第二点的优化,能提高到24%,这样的话,vm里面的io性能几乎认为没损耗。ctrix在今年3月份的时候给了个pa

2012-09-16 14:49:35 1813 1

原创 rhel54 64bit系统的时钟step forward问题

在vcpu overcommit的环境下,rhel54的32bit和64bit系统时钟漂移的现象不一样。32bit系统时间会变慢,这个是reasonable的,但是64bit系统时间会变快,乍一听就觉得不合理,没有理由变快的。32bit有四个clocksource, 而64bit只有一个clocksource,就是jiffie。通过查看代码发现,64bit在时钟中断上来时会对jiffie做补偿,根

2011-12-10 22:01:23 1256

原创 request of blkfront may disorder after migration without waiting in suspend phase of migration

I found the mainline linux 3.0-rc6 xen-blkfront driver doesn't implement suspend func. In my opinion, the blkfront should wait till response

2011-07-15 00:13:47 1159 2

原创 self live migration中的相同vifname问题

self live migration中,如果vm启动时配置了vifname,那么live migration中,restore之后的vm的vifname无法重命名,因为当前dom0已有这个vifname的网卡了,所以不能重命名,也不能addbr。 解决办法:在restore之后,unpause之前把vif 重名,addbr, 并且up起来

2011-06-23 21:14:00 952

原创 fake arp遇上多ip情况

刚发现的问题: netfront和后端建立连接后,会发送fake arp包,如果当前网口上配置了多个Ip, 那么只有一个ip会被选择发送fake arp,其余的ip不会被处理,点解啊? 55555555 头疼啊,这不是逼我非要做到dom0上去嘛

2011-06-22 20:29:00 1523 1

原创 win2003r2 的pv debug信息显示问题

 win2003r2版本的pv driver 的debug版本在日志里面是没有信息的。原因是pv driver里面对于win2003r2的kdprint,没有做hook,注释上说明会导致win2003r2的bug check。 可以的解决办法是人肉地用XenDbgPrint替换kdprint或者将kdprint重定义成xendbgprint的封装函数  

2011-06-16 00:34:00 1043 2

原创 在线迁移中tapdisk2读取的数据不一致问题

<br />Question:<br /> <br />given that vm migrates from host A to host B, which image is vhd file. <br /> <br />in host B, it first creates devices including starting tapdisk2 process, at this time, tapdisk2 will read some metadata of vhd file. then, it xc

2011-02-16 21:33:00 1627 1

原创 win-pv driver 编译安装及测试出的bug

最近,研究虚拟机在线迁移,测出来了几个win-pv的bug。这里先介绍下win-pv 的编译 hg clone http://xenbits.xensource.com/ext/win-pvdrivers.hg 运行makedist.bat之前, 先确认makedist.bat文件里的makecert是否存在,如果不存在,修改makecert的路径,最后修改CERT_NAME

2011-02-16 21:10:00 2422 10

原创 动态修改Xen netback 的rate limit

接着昨天的写,由于detach,attach,重新建立后端和前端握手,对于Linux来说无所谓,windows的话,有点问题。所以采用第二种方法,register xenwatch,callback里面去重新read rate limit。废话少说,直接贴代码。重新编译内核之后,调用xenstore write /local/domain/0/backend/vif/id/0/rate "xxx,xxx",之后进入虚拟机,scp一个文件发现,果然重新限速了。Bingo!

2010-10-26 18:58:00 2571 4

原创 xen 环境

<br />项目发布后,处于短暂休息期,老大去北京出差,周三才回来。之后又要开始新一轮的项目规划。本来打算这两天写点自己的代码,但是吧,貌似我要做的事情,在公司不太方便,哎,想想,还是乖乖地整点公司的事情。<br /> <br />下午主要是把我的开发机环境clean 了下,之前编了太多版本的kernel,导致很多版本,我自己都不知道是加了哪些patch的。现在已经同步到线上的版本了,由于有段时间没编kernel了,命令都生疏了,特整理下来,以方便后面查询。<br /> <br />编译Xen的话,如果需要

2010-10-25 18:32:00 1395 1

原创 线上vhd image恢复

昨天发布,今天早上来公司,发现线上有台vm镜像损坏,vhd-util check -n xxx 之后,报错“failed to get batmap header”正好前段时间研究tapdisk2的时候,顺便看了vhd的文件格式,及一些元数据处理函数。在libvhd.c里面加了一些调试信息,定位到checksum不对。心中暗喜,还好不是数据丢了,只是batmap的问题解决办法就是把block的bitmap和batmap,对比,检查哪个batmap没更新由于代码很久没碰了,生疏了,花了一下午时间,才搞定了,最

2010-10-21 19:57:00 1844

owl-s实例及文档

收集的owl-s资料,里面包括了一个owl-s实例,还有owl文档

2008-11-02

空空如也

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

TA关注的人

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