Redisコードプロファイリング(1)
2335 ワード
Redisコードプロファイリング(1)
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を実行する.
イベントドライバのライブラリ.
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を実行する.
#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);