ceph-common包分析.doc

ceph-common包分析.doc

ID:49614970

大小:51.20 KB

页数:11页

时间:2020-03-02

ceph-common包分析.doc_第1页
ceph-common包分析.doc_第2页
ceph-common包分析.doc_第3页
ceph-common包分析.doc_第4页
ceph-common包分析.doc_第5页
资源描述:

《ceph-common包分析.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Ceph中common包分析概述具体分析Arch给出系统架构,i386或x86-64Staticconstchar*get_arch()Armor对字符进行简单的编解码intceph_armor(char*dst,constchar*dst_end,constchar*src,constchar*end);intceph_unarmor(char*dst,constchar*dst_end,constchar*src,constchar*end);Assert定义了__ceph_assert_fail和__ceph_assert_warn两个函数,被assert和as

2、sert_warn调用。BackTrace封装函数调用栈,backtrace和backtrace_symbols。Buffer一个基类buffer::raw,主要成员char*data;unsignedlen;atomic_tnref;没有copying函数。子类包括raw_malloc:data=(char*)malloc(len);raw_mmap_pages=(char*)::mmap(NULL,len,PROT_READ

3、PROT_WRITE,MAP_PRIVATE

4、MAP_ANON,-1,0)raw_posix_aligned:data=(char*)val

5、loc(len);posix_memalign()raw_hack_aligned:data=newchar[len+PAGE_SIZE-1];raw_char:data=newchar[len];raw_static:评:定义了buffer的基本类型。ceph_argparse解析参数CephContextceph上下文,主要是配置相关成员:配置文件_conf;函数:start_service_thread()reopen_logs()join_service_thread()CephContextServiceThread类继承Thread类,使用sem_t作为锁

6、。Start_service_thread和reopen_logs等对CephContextService的实例进行封装。评:v0.28引入,便于ceph配置,可响应服务结束。Ceph_crypto证书和摘要类基类Digest,子类MD5,SHA1,SHA256,HMACSHA1Clock封装clock类,提供now,recent_now等函数Code_environment获取进程名字、环境等Common_init完成初始化、关闭等工作Cond封装pthread_cond_t,函数wait,signal等Config所有的配置选项及其解析confUtils定义配置文

7、件类ConfFileDebug定义调试输出流,注意使用了锁pthread_mutex_t_dout_lockDecayCounter定义DecayCounter类DoutStreambuf定义输出流缓冲Entity_name定义实体名称,包括auth,mon,osd,mds,clientFiemap定义了read_fiemap函数,do_import函数调用了,属于rbd范畴Finisher定义了一个线程类成员:Mutexfinisher_lock;Condfinisher_cond,finisher_empty_cond,Vectorfinish

8、er_queue;FinisherThreadfinisher_thread;函数:queue,start,stop,wait_for_empty,Finisher_thread_entry会遍历执行finisher_queue中元素的finish()函数。评:多线程学习典范Lockdep定义实现了依赖锁机制,包含5个函数lockdep_register/will_lock/locked/will_unlock/没有定义类,主要的全局变量有:thread_mutex_tlockdep_mutex;hash_maplock_ids;map

9、lock_names;hash_map>held;BackTrace*follows[MAX_LOCKS][MAX_LOCKS];Lockdep_register填充lock_ids和lock_names。does_follow(a,b)判断follows[a][b]的有无,或者存在a->c->blockdep_will_lock(name,id)检查依赖图,是否有回路等lockdep_locked设置held[p][id]=newBackTrace(),其中

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。