راهنمای جامع Ceph
Englishشروع کنید
پیوست ز

فهرست الگوریتم‌ها

۲۰ دقیقه مطالعه

این پیوست همه‌ی ۱۸۸ کادر «الگوریتم» کتاب را به ترتیب فصل فهرست می‌کند. هر کادر شامل توضیح فارسی، شبه‌کد، پیچیدگی، مثال عددی و دست‌کم یک شکل است. ستون «منبع» فایل و تابعی از کد را نشان می‌دهد که الگوریتم از آن استخراج و با آن تطبیق داده شده است. ستون صفحه به خود کادر الگوریتم پیوند دارد.

#الگوریتممنبع در کدفصلصفحه
۱احتمال از دست رفتن یک ‏PG‏ در خرابی هم‌زمان سه ‏OSD‏محاسبه‌ی دقیق روی نگاشت CRUSH با osdmaptool؛ پیش‌فرض mon_target_pg_per_osd = 200 از src/common/options/mgr.yaml.in۱
۲زمان بازگرداندن افزونگی با گلوگاه پرکارترین مقصدنگاشت پیش و پس از osdmaptool --mark-out 0؛ محدودیت‌های واقعی: osd_max_backfills، پروفایل mClock (فصل 21) و شبکه۱
۳ساخت شناسه‌ی ‏image‏ و نام شیءهای آن (قالب ۲)src/librbd/Utils.cc :: generate_image_id؛ src/include/rbd_types.h (پیشوندها)؛ src/cls/rbd/cls_rbd.cc :: dir_add_image۲
۴هرس و انتخاب عمل ‏discard‏src/librbd/io/ImageRequest.cc :: ImageDiscardRequest::prune_object_extents؛ src/librbd/io/ObjectRequest.h :: ObjectDiscardRequest؛ src/librbd/ImageCtx.cc (skip_partial_discard)۲
۵شمارش فضای مصرفی در ‏rbd du‏src/tools/rbd/action/DiskUsage.cc :: get_image_disk_usage (diff_iterate2 با whole_object = !exact)؛ src/librbd/api/DiffIterate.cc۲
۶نگاشت بازه‌ی ‏image‏ به شیءهای ‏RADOS‏ (striping)src/osdc/Striper.cc :: Striper::file_to_extents؛ src/librbd/ImageCtx.cc :: ImageCtx::init_layout۳
۷اندازه و وضعیت‌های ‏object map‏src/include/rbd/object_map_types.h؛ src/librbd/ObjectMap.cc :: ObjectMap::is_compatible؛ src/cls/rbd/cls_rbd_types.h :: MAX_OBJECT_MAP_OBJECT_COUNT؛ src/librbd/io/ObjectRequest.cc :: AbstractObjectWriteRequest؛ src/librbd/object_map/SnapshotCreateRequest.cc :: update_object_map۳
۸محاسبه‌ی ‏diff‏ از روی ‏object map‏هاsrc/librbd/object_map/DiffRequest.cc :: DiffRequest::handle_load_object_map۳
۹سطل توکن ‏TokenBucketThrottle‏ برای ‏rbd_qos_*‏src/common/Throttle.cc :: TokenBucketThrottle::set_limit، tokens_this_tick، add_tokens، Bucket::put، Bucket::get؛ src/librbd/io/QosImageDispatch.cc۳
۱۰نگاشت کلید شیء به ‏shard‏ ایندکس ‏bucket‏src/rgw/services/svc_bi_rados.h :: RGWSI_BucketIndex_RADOS::bucket_shard_index؛ src/rgw/driver/rados/rgw_tools.h :: rgw_shards_mod؛ src/common/ceph_hash.cc :: ceph_str_hash_linux۴
۱۱محاسبه‌ی تعداد ‏shard‏ پیشنهادیsrc/rgw/driver/rados/rgw_reshard.cc :: RGWBucketReshard::calculate_preferred_shards، nearest_prime۴
۱۲تعداد ورودی درخواستی از هر ‏shard‏ در ‏ListObjects‏ مرتبsrc/rgw/driver/rados/rgw_rados.cc :: RGWRados::calc_ordered_bucket_list_per_shard، cls_bucket_list_ordered۴
۱۳چیدمان یک شیء ‏S3‏ در ‏RADOS‏src/rgw/rgw_obj_manifest.cc :: RGWObjManifest::get_implicit_location؛ src/rgw/driver/rados/rgw_putobj_processor.cc :: AtomicObjectProcessor::prepare؛ src/rgw/driver/rados/rgw_obj_manifest.cc :: RGWObjManifest::generator::create_begin۴
۱۴انتخاب ‏shard‏ ‏‏datalog‏ برای یک ‏bucket shard‏src/rgw/driver/rados/rgw_datalog.cc :: RGWDataChangesLog::choose_oid۵
۱۵افزودن ورودی ‏datalog‏ با پنجره و ‏renew‏src/rgw/driver/rados/rgw_datalog.cc :: RGWDataChangesLog::add_entry، renew_entries، renew_run۵
۱۶انتخاب ‏shard‏ ‏‏mdlog‏ برای تغییر فرادادهsrc/rgw/driver/rados/rgw_sal_rados.cc (hash_key = section + ":" + key)؛ src/rgw/driver/rados/rgw_metadata.cc :: rgw_shard_name، RGWMetadataLog::add_entry۵
۱۷‏trim‏ ‏‏datalog‏ بر پایه‌ی کمترین ‏marker‏ پایدارsrc/rgw/driver/rados/rgw_trim_datalog.cc :: DataLogTrimCR، take_min_markers، get_stable_marker۵
۱۸نگاشت بایت فایل به شیء ‏‏RADOS‏ در ‏pool‏ دادهsrc/osdc/Striper.cc :: Striper::file_to_extents؛ src/include/object.cc :: file_object_t::c_str؛ src/mds/InoTable.cc :: InoTable::reset_state۶
۱۹انتخاب ‏dirfrag‏ برای یک ‏dentry‏src/mds/CInode.cc :: InodeStoreBase::hash_dentry_name، pick_dirfrag؛ src/include/frag.h :: fragtree_t::operator[]؛ src/include/ceph_frag.h۶
۲۰تصمیم ‏split‏ و ‏merge‏ برای ‏dirfrag‏src/mds/MDBalancer.cc :: MDBalancer::hit_dir، maybe_fragment، queue_split؛ src/mds/CDir.cc :: CDir::should_split، should_split_fast، should_merge۶
۲۱‏DecayCounter‏ و آستانه‌ی «داغ»src/common/DecayCounter.cc :: DecayCounter::decay؛ src/common/DecayCounter.h :: DecayRate۶
۲۲تصمیم ‏MON‏ برای ‏down‏ کردن یک ‏OSD‏src/mon/OSDMonitor.cc :: OSDMonitor::check_failure، get_grace_time، is_failure_stale۷
۲۳به‌روزرسانی ‏laggy_probability‏ و ‏laggy_interval‏src/mon/OSDMonitor.cc :: OSDMonitor::prepare_boot، grace_interval_threshold_exceeded، set_default_laggy_params۷
۲۴علامت‌گذاری خودکار ‏out‏src/mon/OSDMonitor.cc :: OSDMonitor::tick (down_pending_out)، can_mark_out؛ src/osd/OSDMap.cc :: containing_subtree_is_down۷
۲۵برآورد فضای قابل‌استفاده‌ی یک ‏pool‏src/mon/PGMap.cc :: PGMap::get_rule_avail، dump_object_stat_sum؛ src/osd/OSDMap.cc :: pool_raw_used_rate۷
۲۶شمارش جابه‌جایی با مقایسه‌ی دو نگاشتosdmaptool --test-map-pgs-dump پیش و پس از تغییر؛ bucket_straw2_choose و crush_choose_firstn در src/crush/mapper.c۸
۲۷دسته‌بندی جابه‌جایی‌ها پس از ‏reweight‏crushtool --reweight-item (وزن والدها را هم به‌روز می‌کند)؛ همان مقایسه‌ی A و B۸
۲۸اعتبارسنجی رمز عبور در ‏Dashboard‏src/pybind/mgr/dashboard/services/access_control.py :: PasswordPolicy.check_all، check_password_complexity، check_if_sequential_characters، check_if_repetitive_characters؛ src/pybind/mgr/dashboard/settings.py :: PWD_POLICY_*۹
۲۹بررسی ‏scope‏ و ‏permission‏ برای هر ‏endpoint‏src/pybind/mgr/dashboard/services/auth/auth.py :: AuthManagerTool._check_authorization، JwtManager.gen_token، JwtManager.get_user؛ src/pybind/mgr/dashboard/services/access_control.py :: User.authorize، Role.authorize؛ src/pybind/mgr/dashboard/controllers/_rest_controller.py :: _permission_map۹
۳۰شمارش تلاش ناموفق ورود و غیرفعال‌سازیsrc/pybind/mgr/dashboard/controllers/auth.py :: Auth.create؛ src/pybind/mgr/dashboard/services/access_control.py :: AccessControlDB.increment_attempt، reset_attempt، get_attempt۹
۳۱اندازه‌گیری کهنگی آماراندازه‌گیری؛ mgr_stats_period در src/common/options/mgr.yaml.in۹
۳۲هزینه‌ی هر پرس‌وجو بر حسب تعداد ‏PG‏اندازه‌گیری؛ mgr_command('pg dump') و mon_command('status')۹
۳۳اعتبارسنجی پارامترهای ‏osd bench‏src/osd/OSD.cc :: OSDBenchTest::precheck، OSDBenchTest::run_test (v21.2.0 و main)؛ در v20.2.0 همین منطق در OSD::run_osd_bench_test است۱۰
۳۴آزمون بوت و ذخیره‌ی ‏osd_mclock_max_capacity_iops‏src/osd/OSD.cc :: OSD::maybe_override_max_osd_capacity_for_qos۱۰
۳۵تبدیل پروفایل ‏mClock‏ به رزرو و سقف بایتیsrc/common/mclock_common.cc :: MclockConfig::set_from_config، ClientRegistry::update_from_profile، MclockConfig::calc_scaled_cost؛ src/common/mclock_common.h :: HIGH_CLIENT_OPS، BALANCED، HIGH_RECOVERY_OPS (v21.2.0)۱۰
۳۶حلقه‌ی بسته‌ی ‏rados bench‏ و قانون ‏Little‏rados bench (src/common/obj_bencher.cc)؛ L = X · R۱۰
۳۷جای‌گذاری ‏daemon‏ها روی میزبان‌هاsrc/pybind/mgr/cephadm/schedule.py :: HostAssignment.place، get_candidates۱۱
۳۸اندازه‌ی شکاف ‏DB/WAL‏ روی دستگاه سریعsrc/ceph-volume/ceph_volume/devices/lvm/batch.py :: Batch.fast_allocations، get_physical_fast_allocs۱۱
۳۹ترتیب ارتقا در ‏cephadm‏src/pybind/mgr/cephadm/utils.py :: CEPH_UPGRADE_ORDER؛ src/pybind/mgr/cephadm/upgrade.py :: CephadmUpgrade._do_upgrade، _to_upgrade۱۱
۴۰بیشینه کردن مجموعه‌ی ‏ok-to-stop‏src/mgr/DaemonServer.cc :: DaemonServer::_maximize_ok_to_stop_set، _check_offlines_pgs۱۱
۴۱پذیرفتن یا رد کردن ‏blob‏ فشردهsrc/os/bluestore/BlueStore.cc :: BlueStore::_do_alloc_write (want_len، result_len)۱۲
۴۲فضای تخصیص‌یافته برای یک شیءsrc/os/bluestore/BlueStore.cc (min_alloc_size ثبت‌شده در superblock هنگام mkfs)؛ پیش‌فرض‌های bluestore_min_alloc_size_{hdd,ssd} = 4K در main۱۲
۴۳هدف اندازه‌ی سطح‌ها با گزینه‌های پیش‌فرضsrc/common/options/global.yaml.in :: bluestore_rocksdb_options (max_bytes_for_level_base = 1 GiB، max_bytes_for_level_multiplier = 8)۱۲
۴۴‏Reed-Solomon‏ با ماتریس ‏Vandermonde‏ در ‏ISA‏ (technique=reed_sol_van)src/erasure-code/isa/ErasureCodeIsa.cc :: ErasureCodeIsaDefault::prepare، isa_encode، isa_decode؛ ISA-L ec_base.c :: gf_gen_rs_matrix۱۳
۴۵بررسی ‏MDS‏ بودن ماتریس ‏Vandermonde‏src/erasure-code/isa/ErasureCodeIsa.cc :: ErasureCodeIsaDefault::parse (m > 4، یا m = 4 و k > 21 ← cauchy)۱۳
۴۶نوشتن ‏parity-delta‏ در ‏FastEC‏src/erasure-code/isa/ErasureCodeIsa.cc :: encode_delta، apply_delta (ec_encode_data_update)؛ src/osd/ECTransaction.cc (do_parity_delta_write)۱۳
۴۷حجم خواندن برای بازسازی یک ‏chunk‏src/erasure-code/clay/ErasureCodeClay.cc :: parse (q = d − k + 1، t = (k+m+nu)/q، sub_chunk_no = qᵗ)؛ src/erasure-code/lrc۱۳
۴۸محاسبه‌ی بودجه و ‏throttle‏ دوگانهsrc/osdc/Objecter.cc :: Objecter::calc_op_budget، _throttle_op؛ src/common/Throttle.h :: Throttle::_should_wait۱۴
۴۹سقف ‏throughput‏ یک نمونه‌ی ‏Objecter‏src/osdc/Objecter.cc :: _throttle_op (با پیش‌فرض‌های objecter_inflight_ops و objecter_inflight_op_bytes)۱۴
۵۰‏ping‏ ‏‏linger‏ و انقضای ‏watch‏ در ‏OSD‏src/osdc/Objecter.cc :: Objecter::tick، _send_linger_ping؛ src/osd/PrimaryLogPG.cc (CEPH_OSD_WATCH_OP_WATCH)؛ src/osd/Watch.cc۱۴
۵۱تعیین ‏timeout‏ مؤثر ‏notify‏src/librados/IoCtxImpl.cc :: IoCtxImpl::notify، aio_notify؛ src/osd/PrimaryLogPG.cc (CEPH_OSD_OP_NOTIFY)۱۴
۵۲بررسی پرچم ‏RD/WR‏ پیش و پس از اجرای متد کلاسsrc/osd/osd_op_util.cc :: OpInfo::set_from_op (شاخه‌ی CEPH_OSD_OP_CALL)؛ src/osd/ClassHandler.cc :: ClassHandler::open_class، _get_class، in_class_list؛ src/osd/PrimaryLogPG.cc :: PrimaryLogPG::do_osd_ops۱۵
۵۳گرفتن، تمدید و انقضای قفل در ‏cls_lock‏src/cls/lock/cls_lock.cc :: lock_obj، read_lock؛ src/cls/lock/cls_lock_types.h :: LOCK_FLAG_MAY_RENEW، LOCK_FLAG_MUST_RENEW۱۵
۵۴صفحه‌بندی ‏cls_cxx_map_get_vals‏src/osd/objclass.cc :: cls_cxx_map_get_vals؛ src/osd/PrimaryLogPG.cc :: do_osd_ops (CEPH_OSD_OP_OMAPGETVALS)۱۵
۵۵افزایش اتمی با یک متد کلاسsrc/cls/numops/cls_numops.cc :: add (cls_cxx_map_get_val، سپس cls_cxx_map_set_val)؛ سریال‌سازی با قفل PG در PrimaryLogPG۱۵
۵۶نقطه‌ی سربه‌سر پردازش کنار دادهاندازه‌گیری؛ clslua_read، clslua_stat و eval_json در src/cls/lua/cls_lua.cc۱۵
۵۷اندازه‌ی فیلتر ‏Bloom‏ در ‏HitSet‏src/osd/PrimaryLogPG.cc :: PrimaryLogPG::hit_set_create؛ src/osd/BloomHitSet.h :: BloomHitSet۱۶
۵۸جدول درجه و دمای شیءsrc/osd/osd_types.h :: pg_pool_t::calc_grade_table، get_grade؛ src/osd/PrimaryLogPG.cc :: agent_estimate_temp، agent_maybe_evict؛ src/common/histogram.h :: pow2_hist_t::get_position_micro۱۶
۵۹محاسبه‌ی ‏evict_effort‏src/osd/PrimaryLogPG.cc :: PrimaryLogPG::agent_choose_mode۱۶
۶۰نگاشت ‏bucket‏ به شارد ‏lifecycle‏ و پیمایش کارگرهاsrc/rgw/rgw_lc.cc :: get_lc_index، get_bucket_lc_key، random_sequence، RGWLC::process؛ src/common/ceph_hash.cc :: ceph_str_hash_linux۱۶
۶۱محاسبه‌ی انقضا با گرد کردن به نیمه‌شبsrc/rgw/rgw_lc.cc :: obj_has_expired؛ src/include/utime.h :: utime_t::round_to_day۱۶
۶۲ظرفیت اضافه‌ی ‏DB‏ در ‏use_some_extra‏src/os/bluestore/BlueFS.h :: RocksDBBlueFSVolumeSelector (سازنده، get_extra_level، get_hint_by_dir)؛ src/os/bluestore/BlueStore.cc :: BlueStore::_open_bluefs (ساخت vselector)۱۶
۶۳انتخاب ‏info‏ معتبر در ‏peering‏src/osd/PeeringState.cc :: PeeringState::calculate_maxles_and_minlua، PeeringState::find_best_info۱۷
۶۴شمارش و گزارش عملیات کند با عقب‌نشینی نماییsrc/common/TrackedOp.cc :: OpTracker::with_slow_ops_in_flight، OpTracker::check_ops_in_flight، visit_ops_in_flight۱۷
۶۵تصادفی‌سازی زمان ‏scrub‏ سطحی و عمیقsrc/osd/scrubber/scrub_job.cc :: ScrubJob::adjust_shallow_schedule، ScrubJob::adjust_deep_schedule، ScrubJob::guaranteed_offset؛ src/osd/scrubber/pg_scrubber.cc :: PgScrubber::populate_config_params۱۷
۶۶شمارش حالت ‏PG‏ها در طول یک رخدادceph pg dump pgs_brief (PGMap در mgr)؛ رشته‌ی حالت از pg_state_string در src/osd/osd_types.cc۱۷
۶۷اثر از دست رفتن ‏k‏ میزبان پیش از ‏out‏ شدن ‏OSD‏هانگاشت up از osdmaptool --test-map-pgs-dump؛ معیار min_size در PeeringState (فصل 17)۱۷
۶۸به‌روزرسانی امتیاز اتصال در ‏ConnectionTracker‏src/mon/ConnectionTracker.cc :: report_live_connection، report_dead_connection، get_total_connection_score؛ src/mon/Elector.cc :: ping_check، dead_ping۱۸
۶۹مقایسه‌ی پیشنهادها در ‏ElectionLogic‏src/mon/ElectionLogic.cc :: connectivity_election_score، propose_connectivity_handler۱۸
۷۰‏SimplePolicy‏: نگاشت و جابه‌جایی تصویرهاsrc/tools/rbd_mirror/image_map/SimplePolicy.cc :: calc_images_per_instance، do_shuffle_add_instances، do_map؛ src/tools/rbd_mirror/image_map/Policy.cc :: can_shuffle_image؛ src/tools/rbd_mirror/ImageMap.cc :: schedule_rebalance_task۱۸
۷۱‏pg_autoscaler‏ سه‌گذره (تا ‏v20.2.0‏)src/pybind/mgr/pg_autoscaler/module.py :: PgAutoscaler._calc_final_pg_target، nearest_power_of_two (برچسب v20.2.0)۱۹
۷۲گرد کردن بهینه‌ی ‏PG‏ با برنامه‌ریزی پویاsrc/pybind/mgr/pg_autoscaler/module.py :: PgAutoscaler._find_optimal_pg_distribution، _calculate_final_pool_pg_target، get_dynamic_threshold، PoolGroup.update (برچسب v21.2.0)۱۹
۷۳انحراف وزن‌دار و ‏bal_score‏ در ‏calc_pg_upmaps‏src/osd/OSDMap.cc :: OSDMap::calc_pg_upmaps، calc_deviations، fill_overfull_underfull۱۹
۷۴مسیر ‏balancer‏ در حالت ‏upmap‏src/osd/OSDMap.cc :: calc_pg_upmaps؛ src/pybind/mgr/balancer/module.py؛ همان کد در osdmaptool --upmap۱۹
۷۵کنترل‌گر ‏pg_num‏ و ‏pgp_num‏ در ‏mgr‏src/mgr/DaemonServer.cc :: adjust_pgs؛ گزینه‌های target_max_misplaced_ratio = 0.05 (global.yaml.in) و mgr_max_pg_num_change = 128 (mgr.yaml.in)۱۹
۷۶نگاشت مقدار به ‏bucket‏ در ‏PerfHistogram‏src/common/perf_histogram.cc :: PerfHistogramCommon::get_bucket_for_axis، get_axis_bucket_ranges؛ src/osd/osd_perf_counters.cc :: op_hist_x_axis_config، op_hist_y_axis_config۲۰
۷۷‏cache‏ متریک‌ها و سیاست ‏stale‏src/pybind/mgr/prometheus/module.py :: MetricCollectionThread.collect، Module.config_notify، Root.metrics۲۰
۷۸تشخیص ‏flapping‏ با ‏rate‏ روی یک ‏gauge‏monitoring/ceph-mixin/prometheus_alerts.yml :: CephOSDFlapping۲۰
۷۹انحراف تعداد ‏PG‏ هر ‏OSD‏ از میانگین کلاس دستگاهmonitoring/ceph-mixin/prometheus_alerts.yml :: CephPGImbalance۲۰
۸۰پیش‌بینی پر شدن ‏pool‏ با رگرسیون خطیmonitoring/ceph-mixin/prometheus_alerts.yml :: CephPoolGrowthWarning؛ Prometheus :: predict_linear۲۰
۸۱انتخاب ‏OSDShard‏ برای یک درخواستsrc/osd/OSD.cc :: OSD::ShardedOpWQ::_enqueue، OSD::get_num_op_shards؛ src/osd/osd_types.h :: spg_t::hash_to_shard۲۱
۸۲تنظیم خودکار ‏osd_memory_target‏src/pybind/mgr/cephadm/autotune.py :: MemoryAutotuner.tune؛ src/pybind/mgr/cephadm/serve.py :: CephadmServe._autotune_host_memory۲۱
۸۳تقسیم نوشتن و تصمیم ‏deferred‏ در مسیر کلاسیکsrc/os/bluestore/BlueStore.cc :: BlueStore::_do_write_data، _do_write_big، _do_alloc_write۲۱
۸۴برچسب‌گذاری و انتخاب درخواست در ‏dmClock‏src/dmclock/src/dmclock_server.h :: RequestTag::RequestTag، tag_calc، PriorityQueueBase::do_next_request، reduce_reservation_tags؛ src/osd/scheduler/mClockScheduler.h۲۱
۸۵استخراج زمان هر مرحله از ‏dump_historic_ops‏TrackedOp::mark_event و OpRequest::mark_flag_point (src/common/TrackedOp.cc، src/osd/OpRequest.h)؛ ReplicatedBackend::submit_transaction و do_repop_reply۲۲
۸۶ارسال دسته‌ای ‏libaio‏ با عقب‌نشینی نماییsrc/blk/aio/aio.cc :: aio_queue_t::submit_batch۲۳
۸۷ارسال و برداشت ‏io_uring‏ با دو قفل و ‏epoll‏src/blk/kernel/io_uring.cc :: ioring_queue_t::submit_batch، ioring_queue، ioring_get_cqe، get_next_completed۲۳
۸۸رشد نمایی فضای الحاقsrc/common/buffer.cc :: buffer::list::append(const char*, unsigned)، refill_append_space۲۳
۸۹‏crc32c‏ صفرها با ماتریس‌های جهشsrc/common/crc32c.cc :: ceph_crc32c_zeros، create_turbo_table (جدول crc_turbo_table[32][32])۲۳
۹۰تطبیق ‏crc‏ کش‌شده با ‏seed‏ تازهsrc/common/buffer.cc :: buffer::list::crc32c؛ include/buffer_raw.h :: raw::get_crc، set_crc۲۳
۹۱انتخاب بازه در ‏AvlAllocator‏src/os/bluestore/AvlAllocator.cc :: AvlAllocator::_allocate، _pick_block_after، _pick_block_fits۲۴
۹۲محاسبه‌ی ‏fragmentation_rating‏src/os/bluestore/Allocator.cc :: Allocator::get_fragmentation_score۲۴
۹۳سقف حافظه‌ی ‏AVL‏ و انتقال بازه به ‏bitmap‏src/os/bluestore/AvlAllocator.h :: AvlAllocator::_try_insert_range؛ src/os/bluestore/HybridAllocator_impl.h :: HybridAllocatorBase::allocate، _spillover_range۲۴
۹۴رمزگشایی و وارسی ‏label‏bluestore_bdev_label_t::encode/decode در src/os/bluestore/bluestore_types.cc؛ _write_bdev_label با bl.crc32c(-1) در BlueStore.cc۲۴
۹۵درج و جست‌وجو در ‏skiplist‏rocksdb/memtable/inlineskiplist.h :: InlineSkipList::RandomHeight، FindGreaterOrEqual، Insert۲۵
۹۶تشکیل گروه نوشتنrocksdb/db/write_thread.cc :: WriteThread::JoinBatchGroup، EnterAsBatchGroupLeader، ExitAsBatchGroupLeader۲۵
۹۷تقسیم رکورد ‏WAL‏ به بلوک‌های ۳۲‏K‏rocksdb/db/log_writer.cc :: log::Writer::AddRecord، EmitPhysicalRecord؛ db/log_format.h۲۵
۹۸رمزگذاری دلتای کلید و ‏Seek‏ درون بلوکrocksdb/table/block_based/block_builder.cc :: BlockBuilder::AddWithLastKeyImpl، Finish؛ table/block_based/block.cc :: DataBlockIter::SeekImpl (BinarySeek)؛ util/coding.h :: EncodeVarint32۲۵
۹۹‏Bloom‏ محلی در ‏cache line‏rocksdb/util/bloom_impl.h :: FastLocalBloomImpl::ChooseNumProbes، AddHash، HashMayMatchPrepared؛ BloomMath::CacheLocalFpRate۲۵
۱۰۰محاسبه‌ی هدف سطوح و امتیاز ‏compaction‏rocksdb/db/version_set.cc :: VersionStorageInfo::CalculateBaseBytes، ComputeCompactionScore، MaxInputLevel۲۵
۱۰۱طول قاب ‏msgr2.1‏ روی سیمsrc/msg/async/frames_v2.h :: FrameAssembler::get_preamble_onwire_len، get_segment_onwire_len، get_epilogue_onwire_len، get_frame_onwire_len۲۶
۱۰۲مدیریت ‏nonce‏ در ‏AES-128-GCM‏src/msg/async/crypto_onwire.cc :: rxtx_t::create_handler_pair، AES128GCM_OnWireTxHandler::reset_tx_handler، AES128GCM_OnWireRxHandler::reset_rx_handler۲۶
۱۰۳حلقه‌ی رویداد ‏Worker‏src/msg/async/Event.cc :: EventCenter::process_events، dispatch_event_external، wakeup؛ src/msg/async/Stack.cc :: NetworkStack::add_thread۲۶
۱۰۴توزیع اتصال‌ها بین ‏Worker‏هاsrc/msg/async/Stack.cc :: NetworkStack::get_worker؛ Stack.h :: Worker::release_worker؛ AsyncConnection.cc :: AsyncConnection::_stop۲۶
۱۰۵بازفرستادن و دور ریختن پیام‌ها پس از بازاتصالsrc/msg/async/ProtocolV2.cc :: ProtocolV2::requeue_sent، discard_requeued_up_to، handle_reconnect_ok۲۶
۱۰۶ضرب با جدول ‏log/exp‏isa-l/erasure_code/ec_base.c :: gf_mul، gf_inv۲۷
۱۰۷ضرب برداری با جدول نیم‌بایت (‏split-table‏)isa-l/erasure_code/ec_base.c :: gf_vect_mul_init_base، ec_init_tables_base و نسخه‌های اسمبلی gf_*vect_dot_prod_avx2.asm۲۷
۱۰۸تولید ماتریس کدگذاری ‏ISA-L‏isa-l/erasure_code/ec_base.c :: gf_gen_rs_matrix، gf_gen_cauchy1_matrix؛ src/erasure-code/isa/ErasureCodeIsa.cc :: ErasureCodeIsaDefault::parse، prepare۲۷
۱۰۹‏decode‏ با حذف گاوس-جردن در ‏GF‏(۲⁸)isa-l/erasure_code/ec_base.c :: gf_invert_matrix؛ src/erasure-code/isa/ErasureCodeIsa.cc :: ErasureCodeIsaDefault::isa_decode۲۷
۱۱۰به‌روزرسانی ‏parity‏ با دلتاsrc/erasure-code/isa/ErasureCodeIsa.cc :: ErasureCodeIsaDefault::encode_delta، apply_delta؛ isa-l :: ec_encode_data_update۲۷
۱۱۱تولید ‏mapping‏ و ‏layers‏ در ‏LRC‏src/erasure-code/lrc/ErasureCodeLrc.cc :: ErasureCodeLrc::parse_kml۲۷
۱۱۲انتخاب ‏sub-chunk‏های ترمیم در ‏Clay‏src/erasure-code/clay/ErasureCodeClay.cc :: ErasureCodeClay::parse، get_repair_subchunks، get_repair_sub_chunk_count۲۷
۱۱۳انتخاب در ‏bucket‏ از نوع ‏uniform‏ با جایگشت تدریجیsrc/crush/mapper.c :: bucket_perm_choose و bucket_uniform_choose۲۸
۱۱۴انتخاب در ‏bucket‏ از نوع ‏list‏src/crush/mapper.c :: bucket_list_choose۲۸
۱۱۵انتخاب در ‏bucket‏ از نوع ‏tree‏src/crush/mapper.c :: bucket_tree_choose؛ src/crush/builder.c :: crush_make_tree_bucket۲۸
۱۱۶انتخاب ‏upmap‏ حریصانه با آزمون امتیازsrc/osd/OSDMap.cc :: OSDMap::calc_pg_upmaps، calc_deviations، fill_overfull_underfull، try_pg_upmap، find_best_remap۲۸
۱۱۷نزول چندمرحله‌ای با تلاش دوباره (‏MSR‏)src/crush/mapper.c :: crush_msr_do_rule، crush_msr_choose، crush_msr_descend، crush_msr_get_retry_value۲۸
۱۱۸تقسیم و ادغام ‏extent‏ها در ‏striper‏net/ceph/striper.c :: ceph_file_to_extents، ceph_calc_file_object_mapping، lookup_last۲۹
۱۱۹‏calc_target‏ و تصمیم ‏resend‏net/ceph/osd_client.c :: calc_target، target_should_be_paused، ceph_osds_changed؛ net/ceph/osdmap.c :: ceph_pg_is_split۲۹
۱۲۰‏handle_timeout‏ و ‏handle_osds_timeout‏net/ceph/osd_client.c :: handle_timeout، handle_osds_timeout، send_linger_ping؛ include/linux/ceph/libceph.h (پیش‌فرض‌ها)۲۹
۱۲۱گرفتن قفل انحصاری و کنار زدن مالک مردهdrivers/block/rbd.c :: rbd_acquire_lock، rbd_try_acquire_lock، rbd_try_lock، find_watcher، rbd_request_lock۲۹
۱۲۲رمزگذاری و نمایش ‏caps‏fs/ceph/caps.c :: ceph_cap_string، gcap_string؛ include/linux/ceph/ceph_fs.h (CEPH_CAP_S*، CEPH_CAP_G*)۲۹
۱۲۳زمان‌بندی تعاونی ‏reactor‏ در ‏Seastar‏seastar: reactor::run (به‌کارگیری در src/crimson/osd/main.cc و گزینه‌های crimson_reactor_*)۳۰
۱۲۴انتخاب کم‌بارترین هسته برای ‏PG‏ تازهsrc/crimson/osd/pg_map.cc :: PGShardMapping::get_or_create_pg_mapping۳۰
۱۲۵دسته‌بندی ‏record‏ها در ‏RecordSubmitter‏src/crimson/os/seastore/journal/record_submitter.cc :: RecordSubmitter::submit / flush_current_batch۳۰
۱۲۶انتخاب سگمنت برای بازیابی (‏greedy‏ / ‏cost-benefit‏ / ‏benefit‏)src/crimson/os/seastore/async_cleaner.cc :: SegmentCleaner::calc_gc_benefit_cost و get_next_reclaim_segment۳۰
۱۲۷تشخیص تکمیل با ‏Phase Tag‏ (پیمایش ‏CQ‏)linux: drivers/nvme/host/pci.c :: nvme_poll_cq، nvme_cqe_pending، nvme_update_cq_head۳۱
۱۲۸تقسیم ‏I/O‏ و تخصیص بافر ‏DMA‏ در ‏NVMEDevice‏src/blk/spdk/NVMEDevice.cc :: write_split، make_read_tasks، SharedDriverQueueData::alloc_buf_from_pool۳۱
۱۲۹قانون ‏Little‏ برای عمق صف لازمنتیجه‌ی صف‌نگاری؛ در کد: max_queue_depth = io_queue_size − 1 در SharedDriverQueueData۳۱
۱۳۰انتخاب درگاه جایگزین (کم‌بارترین، با اولویت ‏location‏)src/mon/NVMeofGwMap.cc :: NVMeofGwMap::find_failover_candidate و find_failover_gw_logic۳۱
۱۳۱زمان‌بندی تصادفی ‏scrub‏ (یکنواخت برای ‏shallow‏، نرمال بریده‌شده برای ‏deep‏)src/osd/scrubber/scrub_job.cc :: ScrubJob::adjust_shallow_schedule و adjust_deep_schedule۳۲
۱۳۲انتخاب بازه‌ی ‏chunk‏ با کوچک‌شدن پس از ‏preemption‏src/osd/scrubber/pg_scrubber.cc :: PgScrubber::select_range؛ preemption_data_t::adjust_left در pg_scrubber.h۳۲
۱۳۳انتخاب نسخه‌ی معتبر (‏authoritative‏) در ‏scrub‏src/osd/scrubber/scrub_backend.cc :: ScrubBackend::select_auth_object و possible_auth_shard۳۲
۱۳۴محاسبه‌ی اولویت ‏recovery‏ و ‏backfill‏src/osd/PeeringState.cc :: get_recovery_priority، get_backfill_priority، clamp_recovery_priority۳۲
۱۳۵اعطای رزرو بر پایه‌ی اولویت با ‏preemption‏src/common/AsyncReserver.h :: AsyncReserver::do_queues و preempt_one۳۲
۱۳۶انتخاب هدف‌های ‏async recovery‏ بر پایه‌ی هزینهsrc/osd/PeeringState.cc :: PeeringState::choose_async_recovery_replicated۳۲
۱۳۷‏backfill‏ به‌صورت ‏merge-join‏ روی ‏hobject‏های مرتبsrc/osd/PrimaryLogPG.cc :: PrimaryLogPG::recover_backfill، scan_range، prep_backfill_object_push۳۲
۱۳۸نگاشت ‏PG‏ به ‏shard‏ صف ‏op‏src/osd/osd_types.h :: spg_t::hash_to_shard و src/osd/OSD.cc :: OSD::enqueue_op۳۳
۱۳۹شمارنده‌ی ‏shard‏شده‌ی ‏mempool‏src/common/mempool.cc :: get_num_shards، pick_a_shard_int؛ include/mempool.h :: pool_allocator::allocate۳۳
۱۴۰تنظیم بودجه‌ی ‏cache‏ با بازخورد از ‏heap‏ (tune_memory)src/common/PriorityCache.cc :: PriorityCache::Manager::tune_memory۳۳
۱۴۱تقسیم حافظه میان ‏cache‏ها به ترتیب اولویت با سهم منصفانه‌ی وزنیsrc/common/PriorityCache.cc :: Manager::balance و balance_priority؛ BlueStore.h :: MempoolCache::request_cache_bytes۳۳
۱۴۲انتخاب گره ‏NUMA‏ برای ‏OSD‏src/osd/OSD.cc :: OSD::set_numa_affinity۳۳
۱۴۳بودجه‌ی طول ‏pg log‏ برای هر ‏PG‏OSDService::get_target_pg_log_entries در src/osd/OSD.cc؛ برش در PeeringState::calc_trim_to با osd_pg_log_trim_min = 100۳۳
۱۴۴مقایسه‌ی دو ‏hobject_t‏ و کلید بیتیsrc/common/hobject.cc :: cmp(const hobject_t&, const hobject_t&); src/common/hobject.h :: hobject_t::_reverse_bits, get_bitwise_key_u32۳۴
۱۴۵انتخاب ‏shard‏ برای یک ‏op‏src/osd/OSD.cc :: OSD::enqueue_op، OSD::ShardedOpWQ::_enqueue؛ src/osd/osd_types.h :: spg_t::hash_to_shard۳۴
۱۴۶دروازه‌های پذیرش ‏op‏ در ‏primary‏src/osd/PrimaryLogPG.cc :: PrimaryLogPG::do_request، do_op_impl۳۴
۱۴۷تشخیص درخواست تکراری با ‏pg log‏ و ‏dups‏src/osd/PrimaryLogPG.cc :: PrimaryLogPG::check_in_progress_op؛ src/osd/PGLog.h :: IndexedLog::get_request۳۴
۱۴۸تعیین ‏version‏ و ‏user_version‏ و ساختن ورودی ‏log‏src/osd/PrimaryLogPG.cc :: PrimaryLogPG::execute_ctx، prepare_transaction، finish_ctx۳۴
۱۴۹نام کلید ورودی ‏log‏ و ‏dup‏src/osd/osd_types.cc :: eversion_t::get_key_name، pg_log_dup_t::get_key_name؛ src/osd/osd_types.h :: infover_key، fastinfo_key۳۴
۱۵۰ثبت ‏interval‏ گذشته و تعیین ‏maybe_went_rw‏src/osd/osd_types.cc :: PastIntervals::is_new_interval، PastIntervals::check_new_interval۳۵
۱۵۱ساخت ‏prior set‏ و تشخیص ‏pg down‏src/osd/osd_types.h :: PastIntervals::PriorSet::PriorSet؛ src/osd/osd_types.cc :: PastIntervals::iterate_mayberw_back_to۳۵
۱۵۲‏merge_log‏: ادغام ‏log‏ معتبر در ‏log‏ محلیsrc/osd/PGLog.cc :: PGLog::merge_log، PGLog::rewind_divergent_log۳۵
۱۵۳پنج حالت رسیدگی به ورودی‌های ‏divergent‏ یک شیءsrc/osd/PGLog.h :: PGLog::_merge_object_divergent_entries۳۵
۱۵۴هدف طول ‏log‏ و محاسبه‌ی ‏trim_to‏src/osd/OSD.cc :: OSDService::get_target_pg_log_entries؛ src/osd/PeeringState.cc :: PeeringState::calc_trim_to۳۵
۱۵۵ترتیب ‏recovery‏ در یک دور ‏start_recovery_ops‏src/osd/PrimaryLogPG.cc :: PrimaryLogPG::start_recovery_ops، recover_primary، recover_replicas، recover_backfill۳۵
۱۵۶مقایسه‌ی بازه‌های ‏backfill‏src/osd/PrimaryLogPG.cc :: PrimaryLogPG::recover_backfill، scan_range_primary، scan_range_replica۳۵
۱۵۷‏make_writeable‏: ساختن ‏clone‏ پیش از نخستین نوشتن پس از ‏snapshot‏src/osd/PrimaryLogPG.cc :: PrimaryLogPG::make_writeable، _make_clone۳۶
۱۵۸نگاشت ‏snapid‏ به ‏clone‏ هنگام خواندنsrc/osd/PrimaryLogPG.cc :: PrimaryLogPG::find_object_context۳۶
۱۵۹‏trim‏ یک ‏clone‏ برای یک ‏snap‏ حذف‌شدهsrc/osd/PrimaryLogPG.cc :: PrimaryLogPG::trim_object؛ src/osd/SnapMapper.cc :: SnapMapper::get_next_objects_to_trim۳۶
۱۶۰چرخه‌ی ‏watch‏ و تکمیل ‏notify‏src/osd/Watch.cc :: Watch::connect، Watch::got_ping، Notify::maybe_complete_notify، Notify::do_timeout۳۶
۱۶۱اجرای متد ‏cls‏ درون تراکنش ‏op‏src/osd/PrimaryLogPG.cc :: PrimaryLogPG::do_osd_ops (case CEPH_OSD_OP_CALL)؛ src/osd/ClassHandler.cc؛ src/osd/objclass.cc :: cls_cxx_*۳۶
۱۶۲نگاشت آفست ‏image‏ به (شیء، آفست درون شیء)src/osdc/Striper.cc :: Striper::file_to_extents۳۷
۱۶۳محاسبه‌ی وضعیت تغییر هر شیء میان دو ‏snapshot‏src/librbd/object_map/DiffRequest.cc :: DiffRequest::handle_load_object_map۳۷
۱۶۴عبور یک نوشتن از زنجیره‌ی ‏dispatch‏src/librbd/io/ImageDispatcher.cc؛ src/librbd/io/ObjectDispatcher.cc؛ src/librbd/io/ImageRequest.cc :: ImageWriteRequest؛ src/librbd/io/ObjectRequest.cc :: ObjectWriteRequest۳۸
۱۶۵‏copyup‏: پر کردن شیء ‏clone‏ از والد پیش از نخستین نوشتنsrc/librbd/io/ObjectRequest.cc :: AbstractObjectWriteRequest::compute_parent_info، send_write، handle_write_object؛ src/librbd/io/CopyupRequest.cc؛ src/cls/rbd/cls_rbd.cc :: copyup۳۸
۱۶۶گرفتن ‏exclusive-lock‏ و شکستن قفل مالک مردهsrc/librbd/ManagedLock.cc؛ src/librbd/managed_lock/AcquireRequest.cc، BreakRequest.cc، Utils.cc :: encode_lock_cookie؛ src/librbd/ExclusiveLock.cc۳۸
۱۶۷لایه‌ی ‏writearound‏src/librbd/cache/WriteAroundObjectDispatch.cc :: dispatch_io، block_overlapping_io، flush۳۸
۱۶۸‏token bucket‏ در ‏QoS‏ ‏‏librbd‏src/common/Throttle.cc :: TokenBucketThrottle::add_tokens، get؛ src/librbd/io/QosImageDispatch.cc۳۸
۱۶۹افزودن رویداد به ‏journal‏ و انتخاب شیءsrc/journal/JournalRecorder.cc :: JournalRecorder::append، get_object؛ src/journal/Entry.cc :: Entry::encode۳۹
۱۷۰نوشتن با ‏journaling‏: اول رویداد، بعد دادهsrc/librbd/Journal.cc :: append_write_event، append_io_event، commit_io_event؛ src/librbd/journal/ObjectDispatch.cc۳۹
۱۷۱‏replay‏ رویدادهای ‏journal‏ در ‏rbd-mirror‏src/tools/rbd_mirror/image_replayer/journal/Replayer.cc؛ EventPreprocessor.cc؛ src/librbd/journal/Replay.cc۳۹
۱۷۲یک دور ‏replay‏ در حالت ‏snapshot‏src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc :: scan_local_mirror_snapshots، scan_remote_mirror_snapshots، copy_snapshots، create_non_primary_snapshot، copy_image، update_non_primary_snapshot، unlink_peer۳۹
۱۷۳انتخاب ‏leader‏ و تخصیص ‏image‏ها به ‏instance‏هاsrc/tools/rbd_mirror/LeaderWatcher.cc، InstanceWatcher.cc، ImageMap.cc، image_map/SimplePolicy.cc۳۹
۱۷۴‏prepare‏ و ‏complete‏ در ‏bucket index‏src/cls/rgw/cls_rgw.cc :: rgw_bucket_prepare_op، rgw_bucket_complete_op، rgw_dir_suggest_changes؛ src/rgw/driver/rados/rgw_rados.cc :: RGWRados::Bucket::UpdateIndex۴۰
۱۷۵‏link_olh‏: افزودن نسخه و تعیین نسخه‌ی جاریsrc/cls/rgw/cls_rgw.cc :: rgw_bucket_link_olh؛ src/rgw/driver/rados/rgw_rados.cc :: RGWRados::set_olh، apply_olh_log۴۰
۱۷۶تعیین اندازه‌ی ‏head‏، ‏chunk‏ و ‏stripe‏ برای یک ‏PUT‏src/rgw/driver/rados/rgw_putobj_processor.cc :: AtomicObjectProcessor::prepare؛ src/rgw/rgw_obj_manifest.cc :: set_trivial_rule۴۰
۱۷۷آپلود چندبخشی: ‏init‏، ‏part‏ و ‏complete‏src/rgw/driver/rados/rgw_sal_rados.cc :: RadosMultipartUpload::init، complete؛ src/rgw/driver/rados/rgw_putobj_processor.cc :: MultipartObjectProcessor::complete؛ src/rgw/rgw_multi.h۴۰
۱۷۸خط لوله‌ی پردازش یک درخواستsrc/rgw/rgw_process.cc :: process_request، rgw_process_authenticated؛ src/rgw/rgw_asio_frontend.cc۴۱
۱۷۹بررسی امضای ‏AWS SigV4‏src/rgw/rgw_auth_s3.cc :: get_v4_canonical_headers، get_v4_string_to_sign، get_v4_signing_key، get_v4_signature؛ src/rgw/rgw_auth_s3.h :: RGW_AUTH_GRACE۴۱
۱۸۰جریان داده در ‏PUT‏ و ‏GET‏src/rgw/driver/rados/rgw_putobj_processor.cc؛ src/rgw/rgw_op.cc :: RGWPutObj::execute، RGWGetObj::execute؛ src/rgw/driver/rados/rgw_rados.cc :: get_obj_iterate۴۱
۱۸۱بررسی سهمیه‌ی ‏bucket‏ و کاربرsrc/rgw/rgw_quota.cc :: RGWQuotaHandlerImpl::check_quota، RGWQuotaInfoDefApplier، RGWQuotaInfoRawApplier؛ src/rgw/rgw_common.h :: rgw_rounded_objsize۴۱
۱۸۲سطل توکن در هر ‏RGW‏src/rgw/rgw_ratelimit.h :: RateLimiterEntry؛ src/rgw/rgw_process.cc۴۱
۱۸۳صف ‏gc‏ و پردازش آنsrc/rgw/driver/rados/rgw_gc.cc :: RGWGC::tag_index، send_chain، process؛ src/cls/rgw_gc۴۱
۱۸۴زمان‌بندی و اجرای ‏lifecycle‏src/rgw/rgw_lc.cc :: get_lc_index، RGWLC::process، bucket_lc_process، LCOpAction_*؛ src/rgw/rgw_lc.h۴۱
۱۸۵‏commit‏ یک ‏period‏src/rgw/rgw_zone.cc :: commit_period؛ src/rgw/rgw_period.cc۴۲
۱۸۶همگام‌سازی افزایشی یک ‏shard‏ ‏‏datalog‏src/rgw/driver/rados/rgw_data_sync.cc :: RGWDataSyncShardCR، RGWDataIncSyncShardCR، RGWDataSyncSingleEntryCR، RGWDataFullSyncShardCR۴۲
۱۸۷همگام‌سازی یک ‏bucket shard‏ و یک شیءsrc/rgw/driver/rados/rgw_data_sync.cc :: RGWSyncBucketCR، RGWBucketFullSyncCR، RGWBucketShardIncrementalSyncCR، RGWObjFetchCR؛ src/rgw/driver/rados/rgw_rados.cc :: fetch_remote_obj، obj_time_weight۴۲
۱۸۸‏metadata sync‏ از ‏master zone‏src/rgw/driver/rados/rgw_sync.cc :: RGWMetaSyncCR، RGWMetaSyncShardCR، RGWMetaSyncSingleEntryCR۴۲