Saturday, March 30, 2013

code style

Python的code style

Python官方约定的风格PEP 8 -- Style Guide for Python Code

C++的code style

C++并无官方约定的风格。 我一般会遵从 Google 的C++ style guide

Wednesday, March 27, 2013

在MacOS和Linux上使用Ramdisk

在Linux上使用Ramdisk


我使用如下脚本来生成一个大小可设定的tmpfs作为ramdisk
#!/bin/bash

TMPFS_SIZE=12G

mkdir -p ./ramdisk
sudo umount ./ramdisk >& /dev/null
sudo mount -t tmpfs -o size=$TMPFS_SIZE,mode=0775,gid=binfan tmpfs ./ramdisk

在MacOS上使用Ramdisk


创建一个Ramdisk
$ hdiutil attach -nomount ram://1165430
/dev/disk2                                           
$ diskutil erasevolume HFS+ "ramdisk" /dev/disk2
Started erase on disk2
Unmounting disk
Erasing
Initialized /dev/rdisk2 as a 569 MB HFS Plus volume
Mounting disk
Finished erase on disk2 ramdisk
然后使用df就可以看见这个device了
$ df
Filesystem                        512-blocks      Used Available Capacity  iused    ifree %iused  Mounted on
/dev/disk0s2                       818359360 273993824 543853536    34% 34313226 67981692   34%   /
devfs                                    381       381         0   100%      660        0  100%   /dev
map -hosts                                 0         0         0   100%        0        0  100%   /net
map auto_home                              0         0         0   100%        0        0  100%   /home
/dev/disk0s4                       156733432  41530424 115203008    27%   108561 57608399    0%   /Volumes/BOOTCAMP
localhost:/AI1XeO7VNLFdFPonF9OexW  818359360 818359360         0   100%        0        0  100%   /Volumes/MobileBackups
/dev/disk1s1s2                         35040     35040         0   100%     8758        0  100%   /Volumes/HTC Sync Manager
/dev/disk2                           1165424     27376   1138048     3%     3420   142256    2%   /Volumes/ramdisk
不用的时候在Finder里面弹出这个设备就可以了.

Sunday, March 03, 2013

Memory barrier, volatile, cache coherency

Linux Kernel关于memory barrier的介绍

volatile会强制在你的code里, 每次都re-read该变量值. 但是它不能控制这个值的来源---可能从memory中读入, 也可能因为你的code刚刚访问过这个变量从而从cache中读入而不是memory.

http://stackoverflow.com/questions/558848/can-i-force-cache-coherency-on-a-multicore-x86-cpu

RCU(Read-copy Update)笔记

Linux RCU实现者之一Paul E. McKenney的三篇介绍RCU
What is RCU, Fundamentally?
What is RCU? Part 2: Usage
RCU part 3: the RCU API
Linux Kernel 文档介绍RCU
Linux 2.6内核中新的锁机制--RCU