网站大量收购独家精品文档,联系QQ:2885784924

ceph-common包分析.docx

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ceph-common包分析

Ceph 中common包分析概述具体分析Arch给出系统架构,i386或x86-64Static const char *get_arch()Armor对字符进行简单的编解码Assert定义了__ceph_assert_fail和__ceph_assert_warn两个函数,被assert和assert_warn调用。BackTrace封装函数调用栈,backtrace和backtrace_symbols。Buffer一个基类buffer::raw, 主要成员没有copying函数。子类包括评:定义了buffer的基本类型。ceph_argparse解析参数CephContext ceph上下文,主要是配置相关成员:配置文件_conf; 函数: start_service_thread() reopen_logs() join_service_thread()CephContextServiceThread类继承Thread类,使用sem_t作为锁。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定义配置文件类ConfFileDebug定义调试输出流,注意使用了锁pthread_mutex_t _dout_lockDecayCounter定义DecayCounter类DoutStreambuf定义输出流缓冲Entity_name定义实体名称,包括auth, mon, osd, mds, clientFiemap定义了read_fiemap函数,do_import函数调用了,属于rbd范畴Finisher定义了一个线程类成员: Mutex finisher_lock; Cond finisher_cond, finisher_empty_cond, VectorContext* finisher_queue; FinisherThread finisher_thread;函数:queue, start, stop, wait_for_empty,Finisher_thread_entry会遍历执行finisher_queue中元素的finish()函数。评:多线程学习典范Lockdep定义实现了依赖锁机制,包含5个函数lockdep_register/ will_lock/ locked/ will_unlock/ 没有定义类,主要的全局变量有: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]=new BackTrace(),其中p为当前线程。Lockdep_will_unlock删除held[p][id].评:v0.28后引入,还删除了一些其它的锁机制代码,应该是以后锁机制的核心。但是对它的使用还不是很了解。LogClient定义了LogClient,主要属性:主要函数有:do_log会发送系统日志和监控日志,前者直接调用syslog,后者会发送一个消息._get_mon_log_message把log_queue中的部分消息封装为MLog,并返回。Handle_log_ack 遍历log_queue,删除已确认的日志.ms_dispatch(Message *m)分发消息,如果是MSG_LOGACK则调用handle_log_ack.LogEntry定义了LogEntryKey、LogEntry和LogSummary三个结构体。MemoryModel定义了MemeryModel,主要包括snap结构体函数主要包括_sample(snap *psnap),分析/proc/self/status/和/proc/self/maps文件,填充psnap中size,rss等数值。Mutex封装锁,和lockdep有很多相似的地方,但是封装了一个Mutex类。评:下一步对比lockdep。Page声明了_page_size, _page_mask, _page_shif

文档评论(0)

shenlan118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档