- 浏览: 76057 次
- 性别:
- 来自: 苏州
最新评论
文章列表
根据公司要求技术blog 涉及公司业务 只能在内网发布。从12年开始暂停更新
本人从事 linux 内核 , 分布式存储 高性能计算,机器学习,NLP 相关.
孙子荀 : 2年Linux内核 ,3年分布式计算存储系统 ,4年算法应用研究 联系: sunzixun@126.com
根据公司要求技术blog 涉及公司业务 只能在内网发布。从12年开始暂停更新
本人从事 linux 内核 , 分布式存储 高性能计算,机器学习,NLP 相关.
孙子荀 : 2年Linux内核 ,3年分布式计算存储系统 ,4年算法应用研究 联系: sunzixun@126.com
http://chuansong.me/n/2071796
跑的很欢的 代码 到了 gcc version 4.1.2
下面 __sync_bool_compare_and_swap 找不到了。。。
加了 -march 也不管用 。。
干脆自己写一个吧
参考gcc 的atomic.h
#define LOCK_PREFIX "lock;"
#define __sync_bool_compare_and_swap(mem, oldval, newval) \
({ __typeof (*mem) ret; \
...
最近发现很多hpc 领域的MPI程序中在用usleep(0) ,比较差异。 后来问了之前做hpc 的同事 得到的答复是
一般用usleep(0) 的主要目的应该是:
CPU交出当前线程的执行权,让CPU去执行其他线程。也就是放弃当前线程的时间片,转而执行其他线程
我感觉很诧异。 Usleep(0) 来做这个事情 是POSIX要求的 还是一个意外的发现呢? 我记得我之前都是用 sched_yield() 的啊。
于是有2个问题
static void *
thread_start(void *arg)
{
printf("Subthread starting infinite loop\n");
for (;;)
continue;
}
static void
pclock(char *msg, clockid_t cid)
{
struct timespec ts;
...
NIC register
IntrStatus = 0x3E, /* Interrupt status */
int cp_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
|- dev->irq = pdev->irq;
Int Cp_open(struct net_device *dev)
|-Request_irq(dev->irq, cp_interrupt, IRQF_SHARED, dev->name , dev);
...
sync_inode - write an inode and its pages to disk.
* @inode: the inode to sync
The function is responsible to synchronize all dirty inodes belongings to a given superblock
task = kthread_create(bdi_writeback_thread, &bdi->wb,
"flush-%s", dev_nam ...
<HPC>Torque 基本框架
- 博客分类:
- 云/分布式/虚拟化
背景
TORQUE provides administrators the ability to run scripts before and/or after each job executes. With such ascript, a site can prepare systems, perform node health checks, prepend and append text to output and errorlog files, cleanup systems, and so forth.The following table shows which mom ru ...
接口就是ioctl 没什么好说的 定义了一个上下文的 static DECLARE_MUTEX(ioctl_sem); 用来限制一次只能调用一个ioctl主要分为
Session / Conn/ volume 增加 减少Param的配置修改
先看临时一下 iet_socket_bind
struct iscsi_conn {
struct list_head list; /* list entry in session list */
struct iscsi_session *session; /* owning session */
u16 cid;
un ...
tcp_sack :tcp_sack - BOOLEAN Enable select acknowledgments (SACKS). 1减小重复包。
/*This is what the send packet queuing engine uses to pass * TCP per-packet control information to the transmission code.*/
struct tcp_skb_cb {
union {
struct inet_skb_parm h4; /**/
} header; / ...
<cloud>Gluster ABC
- 博客分类:
- 云/分布式/虚拟化
(可以直接转载 注明出处 有ppt 和pdf 如有需要请留言)
前言
Glusterfs 是一个只需要软件的高效 可扩展 集中化管理的分布式存储系统。可以用于公有云,私有云环境。 这里就说企业私有云,公有云是收费的。 对于为创建一个灵活,经济,表现出色并且高效的分布式存储为前提的私有云环境,Glusterfs 提供了相当优秀的解决方案。他的好处有: 高效的本地和远程数据备份 对于存储扩展只需要线性开销 快速部署 云共享 POSIX的语义( 应用不需要修改直接可用) 免费 灵活易扩展Gluster提供企业 将物理存储变成虚拟化,标准化 按需调整的分布式存储 ,就像使用本地 ...
入门的就不提了,直接从入门之后的说起。。。
源码安装3.2 . 从3.0.8开始 glusterfs 这玩意本来文档就少的可怜,到了3.2压根就表明一点点。。
感觉gluster 不重视这快了,重点发展那个虚拟化平台。。 想了解个所以然 只有通过看代码。。。
3.2 中你会发现少了 scheduler 包括里面的
alu random rr 等 loadbalance Translators 可恶的是 doc 里面的 tanslator-options 压根没提
社区询问得到回复。。。
Are ...
主要分析 如何学习lvm 是如何保证卸载可用,来开发自己的lvm 。
关于lvm 的逻辑卷配置信息 ,上次说过了,一般保存在磁盘的头部一个元数据, 同时可以通过 pvcfgbackup 和restore 来恢复。这里可以实现迁移和恢复。
这次来看看lvm 卸载的效果。 你可以自己先试试看 ,在你卸载 lvm (apt-get purge lvm2) 之后,reboot后你的逻辑卷组还在么。 如果你不放心可以之前先备份一下 :)
同时有一个好的方法看逻辑卷有没有正确挂上
> dmsetup info
我们在安装的时候 一般显示如 ...
DM 和 MD 。。。 一个用于逻辑卷 一个用于软RAID 。都是虚拟的。。。
开始我也很好奇,如果同时启用2个设备,bio 是如何分发的。 现在有了点眉目。
先说一下iscsi 的理解。 简单的看了一下iscsi mod。我的理解就是
网络过来的数据包组织成了 struct tio
然后经过 block_io.c 的
static int
blockio_make_request(struct iet_volume *volume, struct tio *tio, int rw)
处理生成bio 后 直接 s ...