-
升级 CentOS 内核到 3.x
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org一直以来, 服务器系统一直是的 CentOS-6.4, 内核的版本是 N 年以前 的2.6.32(虽然 RH 加了很多 patch), QEMU 的版本我很早就升级到 1.5 了, 由于KVM 在内核中的关系, 很多非常新非常 cool 的特性根本不能用, 比如:NestedKVM. 加上最近在玩 openstack, 如果 hypervise 不支持 nested 的话,会有点麻烦.以...…
-
spice 客户端实现
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org目前上游社区支持的客户端是spice-gtk,它其实是一个库的项目, 编译后能得到两个库: libspice-client-glib: spice client 的协议处理部分 libspice-client-gtk: 整合了 gtk 的更完善的实现virt-manager 通过 spice-gtk 实现了 spiceclient 的功能, 可执行的程序称是 remote-view....…
-
Android NDK Usage
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgSometimes we have to write some C/C++ code to deal with something thatjava can not do in android development. Such as interacting withhardware, or reusing some codec library written in C/C++.Beca...…
-
CPU 基本知识
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org以下是 CPU 中比较容易混淆的概念:socket可以理解为主板上的一个插座, 用来连接物理 CPU 芯片到主板上, 简单讲,有多少个 socket 就有多少个物理 CPU.corecore 的概念涉及到多核心技术是将多个一样的 CPU 放置于一个封装内(或直接将两个 CPU 做成一个芯片),每个这样的 CPU 叫做一个 core, 每个 core 是一个的独立的 执行单元.thread...…
-
Port glib to android
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgglib 是 linux 下非常基础的库,大部分 linux 下的软件 都依赖于它, 比如 gstreamer, gtk 等等.由于最近我在准备 hack spice, 准备把它port 到 android 上, 而 libspice 又依赖于 glib, 所以需要把 glib 移植到android 上.所幸几年前就 hack 过大量程序到 ARM 和blackfin 平台上,所以过程还...…
-
FIO
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgFIO是对硬件进行性能测试和压力测试非常好用的工具, 我常常用它来测试虚拟机的IOPS. 它支持各种引擎(sync, mmap,libaio, posixaio, SG v3, splice, null, network, syslet, guasi,solarisaio, 等). 而且它能像测试文件文件一样的对磁盘块设备进行测试.更多的功能请参考它的 说明文档.由于 FIO 提供了丰富...…
-
Android 开发指南笔记
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-2.org以下是我学习 Android Development Tutorial 的笔记什么是 AndroidAndroid 操作系统 Android SDK(Software Development Kit) 提供了所有开发 Android 程序需要用到的工具, 包括一个编译器, 调试器, 和一个模拟器.Google Play(Android 市场)安全和权限Android 中的安全概念 A...…
-
How to install spice client on Raspberry Pi
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgDownload sourceFirst, we need to download the source of spice client from spiceofficial website, the latest stable version is0.14.$ wget http://spice-space.org/download/gtk/spice-gtk-0.14.tar.bz2...…
-
调试 C 程序的奇淫技巧
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org调试时不要开启任何优化选项如果在编译的时候开启了一些优化选项, 比如 -O2, -O3 什么的,有的变量/函数会被 gcc 自动优化掉, 比如以下的代码片段:for (i = 0; i < msg->num_of_channels; i++) { channel_new_t *c; c = g_new(channel_new_t, 1); c->ses...…
-
Coroutine(协程) 介绍
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org概念coroutine 和函数一样, 区别在于coroutine 有多个入口点, 而一般的函数 函数只能有一个入口点.一般的函数只能从开始的地方执行, 一旦退出, 就只能从 唯一的入口点再开始了.但是 coroutine 不同, 当它觉得没有任务需要处理时, 它可以把 CPU让给其他函数, 然后它在这个让出的点等待, 直到其它函数再把 CPU 给它.考虑以下的例子(producer-co...…
-
使用虚拟串口进行开发
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org开发框架一些程序分析spice vdagentovirt guest agent一个简单的 demoAPP 端的代码#!/usr/bin/python# encoding: utf-8import socketimport timeclass VSPApp(object): def __init__(self, path): self.sock = socket.so...…
-
Spice Server 架构分析
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org概述Spice 是一个 Virtual DeviceInterfaces(VDI) 的库, 它以 libspice库的形式提供给 VDI 后端, 这个后端可以是 QEMU,或者 Xorg 等.架构模型根据上面提到的 VDI 的概念, 它是一个非常复杂的模型, 包括无数的组件:显示模块, 输入输出模块, 各种 guest agent模块, 所以需要一个精心设计的架构来使得各个模块流畅的运行...…
-
GDB Tips
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgwatchpointA “watchpoint” is a special breakpoint that stops your program when thevalue of an expression changes.watch [-l|-location] EXPRSet a watchpoint for an expression. GDB will break when th...…
-
I/O Performance Test
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org测试环境host Fedora 17 Kernel 3.5.3-1.fc17.x86_64 FS ext4guest Ubuntu 12.04, x86_64 Kernel 3.2.0-23 bonnie++ 1.96Other在每次测试的时候, 在 Guest 和 Host 上都执行以下指令, 把缓存清空$ echo 3 > /proc/sys/vm/dr...…
-
编写 Spice Client
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org在 spice-gtk 的帮助下, spiceclient 的编写非常简单. 以致于我在做 Spice Server 的测试的时候,顺手写了一个简单的 spice client.把下面的一些核心部分做一个剖析:static void channel_new(SpiceSession *s, SpiceChannel *c, gpointer *data);/* 创建一个 Spice se...…
-
构建开发环境
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgSpice 基本的组件包括: spice-protocol Spice 协议, 全是以头文件的形式提供的, 这个头文件 expose给外部用到spice的相关程序, e.g. QEMU, spice-gtk spice-common 提供了一些公共的模块, 比如内存分配的 API, ssl 的 API 等, 是给spice-server 和 spice-gtk 共同使用的. s...…
-
以只读方式启动虚拟机
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org有时候想在虚拟机里面做一些测试, 又不想让这些测试损坏虚拟机镜像, 这时候就需要能有一种只读的方式可以用来启动虚拟机.其实, QEMU 支持各种各样的快照模式, Live Snapshot, Temporary Snapshot等等. 利用这些模式, 就可以实现上面所说的功能.创建一个快照用 qemu-img 指令创建一个原始镜像的快照.$ qemu-img create -f qcow...…
-
QEMU 的 CPU 配置
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org根据前面描述 CPU 的基本知识,可以知道 CPU 有物理 CPU, 多核 CPU, 超线程 CPU 之分.事实上, QEMU 支持所有这些配置, 下面一一举例来说明如何模拟这些 CPU.基本的 CPU 模拟下面的指令模拟了一个具有 1 个物理 CPU, 两个逻辑 CPU 的系统$ qemu -enable-kvm -m 1024 ArchLinux.img -smp 2,sockets...…
-
open 的同步标记
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org#+ATTR_HTML: border="2" rules="all" frame="all"open 是 Linux 下打开文件的标准 API, 这个 API同时定义了很多文件操作的参数, 不同的参数对性能影响很大. 事实上,对同步的参数来讲(O_SYNC 系列), 默认的参数 很快, 但是会损失一些功能, 比如cache 的存在并没有真正的把修改的内容写入文件,如果是异常关机可能导致...…
-
Nested KVM
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org最近同事抱怨开发的机器不够用, 由于是研发 KVM 相关的程序,所以需要有带有硬件 虚拟化支持的机器. 其实公司服务器很多都是闲置的,所以只要 Guest 能支持 KVM, 问题就迎刃而解了.简单的对这个问题做了一下研究.概念Nested KVM 指的是在 一个运行的 KVM 虚拟机里面在运行 KVM 虚拟机.现在 Nested KVM 已经相对稳定了(以前 Nest KVM 甚至不支持...…