پیوست ز
فهرست الگوریتمها
این پیوست همهی ۱۸۸ کادر «الگوریتم» کتاب را به ترتیب فصل فهرست میکند. هر کادر شامل توضیح فارسی، شبهکد، پیچیدگی، مثال عددی و دستکم یک شکل است. ستون «منبع» فایل و تابعی از کد را نشان میدهد که الگوریتم از آن استخراج و با آن تطبیق داده شده است. ستون صفحه به خود کادر الگوریتم پیوند دارد.
| # | الگوریتم | منبع در کد | فصل | صفحه |
|---|---|---|---|---|
| ۱ | احتمال از دست رفتن یک 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 | ۴۲ |