Redisコードプロファイリング(1)

2335 ワード

Redisコードプロファイリング(1)

  • ACL
  • AE
  • aeCreateEventLoop作成イベントループ
  • aeCreateTimeEvent作成タイムイベント
  • aesearchNearestTimer最近のタイムイベント
  • を検索
  • processtimeEventsループ実行時間イベント
  • aeMain event処理メインサイクル
  • イベント処理api
  • bioバックグラウンドIOサービス
  • グローバルオブジェクト
  • bioInitバックグラウンドIOシステム初期化
  • bioProcessBackgroundJobsバックグラウンドio処理スレッド

  • ACL


    ACLアクセス制御リスト(Access Control List)

    AE


    イベントドライバのライブラリ.

    aecreateEventLoopイベントループの作成


    この関数は主にaeEventLoopオブジェクトを初期化し、主な操作はメモリ操作を割り当てていない.aeEventLoopオブジェクトは主に以下のメンバーを含む:1.aeFileEventが登録するメッセージイベントのリスト2.aeFiredEventが送信メッセージイベントリスト3.aeTimeEvent時間メッセージイベントリスト4.stopイベントキューの停止フラグ

    aecreateTimeEvent作成時間イベント


    aesearchNearestTimer最近のタイムイベントを検索


    プロセスタイムイベント


    現在時刻を取得し、タイムイベントチェーンテーブルをループし、現在時刻>=サブスクリプション実行時間の場合、時間処理関数を実行します.

    aeMain event処理メインサイクル


    イベント処理api


    aeApiCreate作成イベントepoll_を呼び出すcreateはepollのハンドルを作成し、sizeはカーネルというリスニングの数が全部でどれだけ大きいかを教えます.aeApiResizeイベントループのサイズを変更aeApiAddEvent追加イベントでepollを呼び出すctl epollのイベント登録関数は、epollイベントを追加します.aeApiDelEvent削除イベントハンドルaeApiDelEventポーリングイベントepoll_を呼び出すwaitはepollイベントの発生を傍受する

    bioバックグラウンドIOサービス


    グローバルオブジェクト


    1.pthread_t bio_threads[BIO_NUM_OPS]スレッド配列オブジェクト、pthread_tはスレッドID 2を宣言するために用いる.pthread_mutex_t bio_mutex[BIO_NUM_OPS]スレッド反発量配列,pthread_mutex_t使用前に初期化が必要
    #include 
    int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr);
    

    反発量の使用については、下記の関数を使用します.
    #include 
    
    int pthread_mutex_tlock(pthread_mutex_t *mutex);
    int pthread_mutex_trylock(pthread_mutex_t *mutex);
    int pthread_mutex_unlock(pthreadd_mutex_t *mutex);
    
    

    3.pthread_cond_t bio_newjob_cond[BIO_NUM_OPS]は条件変数配列4を定義する.pthread_cond_t bio_step_cond[BIO_NUM_OPS]は条件変数配列5を定義する.bio_jobs[BIO_NUM_OPS]バックグラウンドIOのjob 6.bio_pending[BIO_NUM_OPS]掛けたバックグラウンドIO job

    BioInitバックグラウンドIOシステム初期化


    この関数はpthread_をループ呼び出します.create(&thread,&attr,bioProcessBackgroundJobs,arg)スレッド.

    bioProcessBackgroundJobsバックグラウンドio処理スレッド


    スレッドパラメータtypeに従ってbio_からjobs[BIO_NUM_OPS]は、最初のjobを取り出し、jobを実行する.