Home
last modified time | relevance | path

Searched refs:threads (Results 1 – 25 of 32) sorted by relevance

12

/spdk/doc/
H A Dscheduler.md4 lightweight threads. Schedulers are provided as plugins, called
61 Lightweight threads are distributed round-robin among reactors, respecting
83 Active threads are distributed equally among reactors, taking cpu_mask into
84 account. All idle threads are moved to the main core. Once an idle thread becomes
86 redistributes SPDK threads on cores in a way that none of them is over `core limit`.
87 In case a core utilization surpasses this threshold, scheduler should move threads
89 state, which indicates that moving threads out of this core will not decrease its
90 utilization under the `core limit` and the threads are unable to process all the I/O
91 they are capable of, because they share CPU ticks with other threads. The threshold
92 to decide if a core is overloaded is called `core busy`. Note that threads residing
[all …]
H A Dconcurrency.md10 software's threads of execution must be independent from one another as much as
15 the heap, protecting it with a lock, and then having all threads of execution
24 * The scheduler can interrupt threads, allowing for efficient time-sharing
27 Unfortunately, as the number of threads scales up, contention on the lock around
30 locks, threads will spend most of their time attempting to acquire the locks and
34 global location that all threads access after acquiring a lock, SPDK will often
35 assign that data to a single thread. When other threads want to access the data,
42 are passed between threads using a
53 copy. To mutate the data, threads will send a message to each other thread
72 move an `spdk_thread` between system threads at any time, as long as there is
[all …]
H A Devent.md9 core (reactor) and connects the threads with lockless queues. Messages
10 (events) can then be passed between the threads. On modern CPU architectures,
22 simultaneous connections), the application may need to use multiple threads.
24 connections, the application can be scaled by creating additional threads and
36 event framework runs one event loop thread per CPU core. These threads are
42 on the operating system to schedule many threads issuing blocking I/O onto a
51 threads from any core may insert events into the queue of any other core. The
H A Dspdk_top.md4 lightweight threads and pollers. Have you ever wondered which CPU core is used most by your SPDK in…
10 an SPDK application schedules SPDK lightweight threads and pollers to run on the CPU core. Therefor…
45 The threads tab displays a line item for each spdk thread. The information displayed shows:
57 To learn more about spdk threads see @ref concurrency.
79 * Thread count - number of threads currently running on core.
85 … a pop-up window appear, showing above information, along with a list of threads running on select…
H A Duserspace.md76 requests to the device from multiple threads of execution in parallel without
84 temporarily disable interrupts to guard against preemption from threads
90 This application knows exactly how many threads (or processes) exist
97 locking) with the other threads in the system.
H A Dgdb_macros.md6 in lists, e.g. information about bdevs or threads.
70 Printing spdk threads:
235 threads = SpdkThreads()
254 - spdk_print_threads: information about threads
H A Dgetting_started.md118 regular `top` application and shows SPDK threads, pollers and SPDK assigned
H A Dbdev_pg.md53 made from threads that have been allocated with SPDK by calling
96 Descriptors may be passed to and used from multiple threads simultaneously.
/spdk/test/blobfs/rocksdb/
H A Drocksdb.sh117 --threads=1
126 --threads=16
136 --threads=1
146 --threads=4
156 --threads=1
H A Dpostprocess.py16 threads = set() variable
31 threads.add(fields[2])
37 for thread in sorted(threads):
/spdk/test/unit/lib/event/reactor.c/
H A Dreactor_ut.c143 lw_thread = TAILQ_FIRST(&reactor->threads); in test_schedule_thread()
147 TAILQ_REMOVE(&reactor->threads, lw_thread, link); in test_schedule_thread()
193 CU_ASSERT(TAILQ_FIRST(&reactor->threads) == lw_thread); in test_reschedule_thread()
214 CU_ASSERT(TAILQ_EMPTY(&reactor->threads)); in test_reschedule_thread()
230 CU_ASSERT(TAILQ_FIRST(&reactor->threads) == lw_thread); in test_reschedule_thread()
234 TAILQ_REMOVE(&reactor->threads, lw_thread, link); in test_reschedule_thread()
359 * After that reactor0 runs with no threads for 900 TSC. in test_reactor_stats()
491 CU_ASSERT(TAILQ_EMPTY(&reactor->threads)); in test_reactor_stats()
556 /* Create threads. */ in test_scheduler()
571 CU_ASSERT(!TAILQ_EMPTY(&reactor->threads)); in test_scheduler()
[all...]
/spdk/test/scheduler/
H A Dcgroups.sh49 new_proc_interface=cgroup.threads
52 old_proc_interface=cgroup.threads
127 proc_interface=cgroup.threads
140 proc_interface=cgroup.threads
H A Didle.sh39 local threads
54 threads=($(
H A Dinterrupt.sh49 busy_cpus=("${cpus[@]:1:3}") threads=()
54threads[cpu]=$(create_thread -n "thread$cpu" -m "$(mask_cpus "$cpu")" -a 100) cpus_to_collect=("$c…
H A Dload_balancing.sh21 local threads thread
46 threads=($(jq -r "select(.lcore == $cpu) | .lw_threads[].id" <<< "$reactor_framework"))
H A Dcommon.sh458 local thread threads stats
460 stats=$(rpc_cmd thread_get_stats | jq -r '.threads[]')
461 threads=($(jq -r '.id' <<< "$stats"))
463 for thread in "${threads[@]}"; do
679 # HACK: Since we verify this in context of business of particular SPDK threads, make
776 # we aim at reactor threads and these should be bound to a single cpu
/spdk/scripts/perf/nvmf/
H A Drun_nvmf.py957 threads = range(0, self.num_cores)
960 threads = range(0, int(self.num_cores))
963 threads = range(0, len(self.subsystem_info_list))
965 filename_section = self.gen_fio_filename_conf(self.subsystem_info_list, threads, io_depth, fio_settings["num_jobs"],
1493 def gen_fio_filename_conf(self, subsystems, threads, io_depth, num_jobs=1, offset=False, offset_inc=0, numa_align=True):
1495 if len(threads) >= len(subsystems):
1496 threads = range(0, len(subsystems))
1505 nvme_per_split = int(len(nvme_list) / len(threads))
1506 remainder = len(nvme_list) % len(threads)
1509 for i in range(len(threads))
1502 gen_fio_filename_conf(self, subsystems, threads, io_depth, num_jobs=1, offset=False, offset_inc=0, numa_align=True) global() argument
1653 gen_fio_filename_conf(self, subsystems, threads, io_depth, num_jobs=1, offset=False, offset_inc=0, numa_align=True) global() argument
[all...]
H A DREADME.md249 - cpus_allowed - str, list of CPU cores to run fio threads on. Takes precedence
253 threads. Default: shared. For more information see `man fio`.
254 - num_cores - By default fio threads on initiator side will use as many CPUs
256 used for fio threads to this number; cores are allocated randomly and fio
329 is enabled fio file will get split evenly between fio threads doing the
/spdk/app/spdk_top/
H A Dspdk_top.c262 struct rpc_core_threads threads; member
353 struct rpc_core_threads *threads; in free_rpc_core_info() local
358 threads = &core_info[core_number].threads; in free_rpc_core_info()
359 for (i = 0; i < threads->threads_count; i++) { in free_rpc_core_info()
360 thread = &threads->thread[i]; in free_rpc_core_info()
364 free(threads->thread); in free_rpc_core_info()
500 struct rpc_core_threads *threads = out; in rpc_decode_cores_lw_threads() local
506 assert(threads != NULL); in rpc_decode_cores_lw_threads()
507 threads->thread = calloc(threads_count, sizeof(struct rpc_core_thread_info)); in rpc_decode_cores_lw_threads()
509 return spdk_json_decode_array(val, rpc_decode_core_threads_object, threads->thread, threads_count, in rpc_decode_cores_lw_threads()
[all …]
H A DREADME13 threads, pollers, execution times, and relations between those. All data
/spdk/lib/event/
H A Dreactor.c212 TAILQ_INIT(&reactor->threads); in spdk_reactor_get()
437 TAILQ_FOREACH_SAFE(lw_thread, &target->threads, link, tmp) { in spdk_reactor_set_interrupt_mode()
673 /* This global is being read by multiple threads, so this isn't in _init_thread_stats()
824 /* Phase 1 of thread scheduling is to gather metrics on the existing threads */ in _reactors_scheduler_gather_metrics()
863 TAILQ_FOREACH(lw_thread, &reactor->threads, link) { in _reactor_remove_lw_thread()
890 /* Phase 2 of scheduling is rebalancing - deciding which threads to move where */ in reactor_interrupt_run()
907 TAILQ_REMOVE(&reactor->threads, lw_thread, link); in _reactor_run()
960 /* If no threads are present on the reactor, in reactor_run()
963 if (spdk_unlikely(TAILQ_EMPTY(&reactor->threads))) { in reactor_run()
970 TAILQ_FOREACH_SAFE(lw_thread, &reactor->threads, lin in reactor_run()
[all...]
/spdk/scripts/perf/pm/
H A Dcollect-cpu-temp66 local core crit input id label max node package threads
103 threads=($(get_cpus "$node" "$core"))
107 "${threads[*]}" \
/spdk/scripts/
H A Dgdb_macros.py307 threads = SpdkThreads()
308 super(spdk_print_threads, self).__init__(name, threads)
/spdk/app/fio/nvme/
H A DREADME.md84 plugin supports multiple threads - in this case, the "1" just means "use thread mode".
98 think that is caused by the FIO architecture. Mainly FIO can scale with multiple threads (i.e., usi…
/spdk/module/scheduler/dynamic/
H A Dscheduler_dynamic.c127 * Core load will reflect the sum of all remaining threads on it. */ in _move_thread()
135 * very possible the remaining threads will use these cycles in _move_thread()
140 * move threads to this core during this scheduling in _move_thread()
197 /* Core has no threads. */ in _can_core_fit_thread()
253 /* First consider g_main_lcore, consolidate threads on main lcore if possible. */ in _find_optimal_core()
256 /* Lower core id was found, move to consolidate threads on lowest core ids. */ in _find_optimal_core()
265 * to balance threads. */ in init()
346 /* Distribute threads in two passes, to make sure updated core stats are considered on each pass. in balance()
347 * 1) Move all idle threads to main core. */ in balance()
349 /* 2) Distribute active threads acros in balance()
[all...]

12