/linux/Documentation/translations/zh_CN/scheduler/ |
H A D | sched-capacity.rst | 18 1. CPU算力 24 一般来说,同构的SMP平台由完全相同的CPU构成。异构的平台则由性能特征不同的CPU构成,在这样的 25 平台中,CPU不能被认为是相同的。 27 我们引入CPU算力(capacity)的概念来测量每个CPU能达到的性能,它的值相对系统中性能最强的CPU 28 做过归一化处理。异构系统也被称为非对称CPU算力系统,因为它们由不同算力的CPU组成。 30 最大可达性能(换言之,最大CPU算力)的差异有两个主要来源: 32 - 不是所有CPU的微架构都相同。 33 - 在动态电压频率升降(Dynamic Voltage and Frequency Scaling,DVFS)框架中,不是所有的CPU都 39 CPU性能通常由每秒百万指令(Millions of Instructions Per Second,MIPS)表示,也可表示为 47 调度器使用了两种不同的算力值。CPU的 ``capacity_orig`` 是它的最大可达算力,即最大可达性能等级。 [all …]
|
H A D | sched-stats.rst | 23 在第14版schedstat中,每个被列出的CPU至少会有一级域统计数据,且很可能有一个 25 CPU上仲裁平衡,而domain0是最紧密聚焦的域,有时仅在一对CPU之间进行平衡。此时, 27 CPU受该域的影响。 38 CPU统计数据 56 6) 调用try_to_wake_up()导致本地CPU被唤醒了#次 62 9) 本CPU运行了#个时间片 67 对于每个被描述的CPU,和它相关的每一个调度域均会产生下面一行数据(注意,如果 72 第一个字段是一个位掩码,表明该域在操作哪些CPU。 78 1) 当CPU空闲时,sched_balance_rq()在这个调度域中被调用了#次 79 2) 当CPU空闲时,sched_balance_rq()在这个调度域中被调用,但是发现负载无需 [all …]
|
H A D | sched-energy.rst | 17 能量感知调度(EAS)使调度器有能力预测其决策对CPU所消耗的能量的影响。EAS依靠 18 一个能量模型(EM)来为每个任务选择一个节能的CPU,同时最小化对吞吐率的影响。 24 /!\ EAS不支持对称CPU拓扑的平台 /!\ 26 EAS只在异构CPU拓扑结构(如Arm大小核,big.LITTLE)上运行。因为在这种情况下, 59 简而言之,EAS改变了CFS任务分配给CPU的方式。当调度器决定一个任务应该在哪里 61 CPU中挑选一个经预测能量消耗最优的CPU。EAS的预测依赖于对平台拓扑结构特定元素 62 的了解,包括CPU的“算力”,以及它们各自的能量成本。 68 EAS(以及调度器的剩余部分)使用“算力”的概念来区分不同计算吞吐率的CPU。一个 69 CPU的“算力”代表了它在最高频率下运行时能完成的工作量,且这个值是相对系统中 70 算力最大的CPU而言的。算力值被归一化为1024以内,并且可与由实体负载跟踪 [all …]
|
H A D | sched-domains.rst | 18 每个CPU有一个“基”调度域(struct sched_domain)。调度域层次结构从基调度域构建而来,可 19 通过->parent指针自下而上遍历。->parent必须以NULL结尾,调度域结构体必须是per-CPU的, 22 每个调度域管辖数个CPU(存储在->span字段中)。一个调度域的span必须是它的子调度域span的 23 超集(如有需求出现,这个限制可以放宽)。CPU i的基调度域必须至少管辖CPU i。每个CPU的 24 顶层调度域通常将会管辖系统中的全部CPU,尽管严格来说这不是必须的,假如是这样,会导致某些 25 CPU出现永远不会被指定任务运行的情况,直到允许的CPU掩码被显式设定。调度域的span字段意味 26 着“在这些CPU中做进程负载均衡”。 28 每个调度域必须具有一个或多个CPU调度组(struct sched_group),它们以单向循环链表的形式 29 组织,存储在->groups指针中。这些组的CPU掩码的并集必须和调度域span字段一致。->groups 30 指针指向的这些组包含的CPU,必须被调度域管辖。组包含的是只读数据,被创建之后,可能被多个 [all …]
|
H A D | schedutil.rst | 22 通过PELT,我们跟踪了各种调度器实体的一些指标,从单个任务到任务组分片到CPU 36 请注意,阻塞态的任务仍然对累加值(任务组分片和CPU运行队列)有贡献,这反映了 40 在CPU上花费的时间,而“可运行”反映了一个调度实体在运行队列中花费的时间。当只有 41 一个任务时,这两个指标是相同的,但一旦出现对CPU的争用,“运行”将减少以反映每个 42 任务在CPU上花费的时间,而“可运行”将增加以反映争用的激烈程度。 47 频率 / CPU不变性 50 因为CPU频率在1GHz时利用率为50%和CPU频率在2GHz时利用率为50%是不一样的,同样 78 r_cpu被定义为当前CPU的最高性能水平与系统中任何其它CPU的最高性能水平的比率。 82 其结果是,上述“运行”和“可运行”的指标变成DVFS无关和CPU型号无关了。也就是说, 83 我们可以在CPU之间转移和比较它们。 [all …]
|
/linux/Documentation/translations/zh_CN/core-api/ |
H A D | cpu_hotplug.rst | 16 内核中的CPU热拔插 32 节点的插入和移除需要支持CPU热插拔。 34 这样的进步要求内核可用的CPU被移除,要么是出于配置的原因,要么是出于RAS的目的, 35 以保持一个不需要的CPU不在系统执行路径。因此需要在Linux内核中支持CPU热拔插。 37 CPU热拔插支持的一个更新颖的用途是它在SMP的暂停恢复支持中的应用。双核和超线程支 45 限制启动时的CPU为 *n* 个。例如,如果你有四个CPU,使用 ``maxcpus=2`` 将只能启 46 动两个。你可以选择稍后让其他CPU上线。 49 限制内核将支持的CPU总量。如果这里提供的数量低于实际可用的CPU数量,那么其他CPU 62 CPU位图 66 系统中可能可用CPU的位图。这是用来为per_cpu变量分配一些启动时的内存,这些变量 [all …]
|
H A D | this_cpu_ops.rst | 22 this_cpu操作是一种优化访问与当前执行处理器相关的每CPU变量的方法。这是通过使用段寄 23 存器(或专用寄存器,cpu在其中永久存储特定处理器的每CPU区域的起始)来完成的。 25 this_cpu操作将每CPU变量的偏移量添加到处理器特定的每CPU基址上,并将该操作编码到对 26 每CPU变量进行操作的指令中。 36 器所特有的每CPU数据。只有当前的处理器可以访问该变量,因此系统中的其他处理器不存在 39 请注意,远程处理器对每CPU区域的访问是特殊情况,可能会影响通过 ``this_cpu_*`` 的本 66 在x86上,fs:或gs:段寄存器包含每CPU区域的基址。这样就可以简单地使用段覆盖,将每CPU 67 相对地址重定位到处理器适当的每CPU区域。所以对每CPU基址的重定位是通过段寄存器前缀 81 而不是像每CPU操作那样,先是一系列的地址计算,然后从该地址获取。在this_cpu_ops之前, 103 请注意,这些操作只能用于为特定处理器保留的每CPU数据。如果不在上下文代码中禁用抢占, [all …]
|
H A D | workqueue.rst | 41 在最初的wq实现中,多线程(MT)wq在每个CPU上有一个工作者线程,而单线程 42 (ST)wq在全系统有一个工作者线程。一个MT wq需要保持与CPU数量相同的工 43 作者数量。这些年来,内核增加了很多MT wq的用户,随着CPU核心数量的不断 48 工作者池。一个MT wq只能为每个CPU提供一个执行环境,而一个ST wq则为整个 61 * 使用由所有wq共享的每CPU统一的工作者池,在不浪费大量资源的情况下按 86 每个可能的CPU都有两个工作者池,一个用于正常的工作项,另一个用于高 91 不需要担心并发问题。每个CPU上的BH工作者池只包含一个用于表示BH执行 97 标志包括诸如CPU定位、并发限制、优先级等等。要获得详细的概述,请参 102 否则一个绑定的工作队列的工作项将被排在与发起线程运行的CPU相关的普 109 每个与实际CPU绑定的worker-pool通过钩住调度器来实现并发管理。每当 [all …]
|
H A D | local_ops.rst | 19 如何正确使用这些操作。它还强调了在内存写入顺序很重要的情况下,跨CPU读取 33 本地原子操作的目的是提供快速和高度可重入的每CPU计数器。它们通过移除LOCK前 34 缀和通常需要在CPU间同步的内存屏障,将标准原子操作的性能成本降到最低。 36 在许多情况下,拥有快速的每CPU原子计数器是很有吸引力的:它不需要禁用中断来保护中 40 本地原子操作只保证在拥有数据的CPU上的变量修改的原子性。因此,必须注意确保只 41 有一个CPU写到 ``local_t`` 的数据。这是通过使用每CPU的数据来实现的,并确 42 保我们在一个抢占式安全上下文中修改它。然而,从任何一个CPU读取 ``local_t`` 43 数据都是允许的:这样它就会显得与所有者CPU的其他内存写入顺序不一致。 66 * *只有* 这些变量的CPU所有者才可以写入这些变量。 68 * 这个CPU可以从任何上下文(进程、中断、软中断、nmi...)中使用本地操作来更新 [all …]
|
H A D | refcount-vs-atomic.rst | 38 子性和程序顺序(program order, po)关系(在同一个CPU上)。它保证每个 39 ``atomic_* ()`` 和 ``refcount_*()`` 操作都是原子性的,指令在单个CPU上按程序 42 强(完全)内存顺序保证在同一CPU上的所有较早加载和存储的指令(所有程序顺序较早 44 同一CPU上储存的程序优先较早的指令和来自其他CPU传播的指令必须在该CPU执行任何 45 程序顺序较后指令之前传播到其他CPU(A-累积属性)。这是用smp_mb()实现的。 47 RELEASE内存顺序保证了在同一CPU上所有较早加载和存储的指令(所有程序顺序较早 48 指令)在此操作前完成。它还保证同一CPU上储存的程序优先较早的指令和来自其他CPU 49 传播的指令必须在释放(release)操作之前传播到所有其他CPU(A-累积属性)。这是用 52 ACQUIRE内存顺序保证了同一CPU上的所有后加载和存储的指令(所有程序顺序较后 53 指令)在获取(acquire)操作之后完成。它还保证在获取操作执行后,同一CPU上 [all …]
|
/linux/Documentation/translations/ko_KR/ |
H A D | memory-barriers.txt | 93 - CPU 메모리 배리어. 102 (*) CPU 간 ACQUIRING 배리어의 효과. 117 (*) CPU 캐시의 영향. 123 (*) CPU 들이 저지르는 일들. 147 | CPU 1 |<----->| Memory |<----->| CPU 2 | 164 프로그램은 여러 메모리 액세스 오퍼레이션을 발생시키고, 각각의 CPU 는 그런 165 프로그램들을 실행합니다. 추상화된 CPU 모델에서 메모리 오퍼레이션들의 순서는 166 매우 완화되어 있고, CPU 는 프로그램이 인과관계를 어기지 않는 상태로 관리된다고 172 따라서 위의 다이어그램에서 한 CPU가 동작시키는 메모리 오퍼레이션이 만들어내는 173 변화는 해당 오퍼레이션이 CPU 와 시스템의 다른 부분들 사이의 인터페이스(점선)를 [all …]
|
/linux/Documentation/translations/zh_CN/mm/ |
H A D | mmu_notifier.rst | 17 对于二级TLB(非CPU TLB),如IOMMU TLB或设备TLB(当设备使用类似ATS/PASID的东西让 18 IOMMU走CPU页表来访问进程的虚拟地址空间)。只有两种情况需要在清除pte/pmd时在持有页 43 CPU-thread-0 {尝试写到addrA} 44 CPU-thread-1 {尝试写到addrB} 45 CPU-thread-2 {} 46 CPU-thread-3 {} 50 CPU-thread-0 {COW_step0: {mmu_notifier_invalidate_range_start(addrA)}} 51 CPU-thread-1 {COW_step0: {mmu_notifier_invalidate_range_start(addrB)}} 52 CPU-thread-2 {} 53 CPU-thread-3 {} [all …]
|
H A D | numa.rst | 18 从硬件角度看,NUMA系统是一个由多个组件或装配组成的计算机平台,每个组件可能包含0个或更多的CPU、 28 所有的内存都是可见的,并且可以从连接到任何单元的任何CPU中访问,缓存一致性是由处理器缓存和/或 31 内存访问时间和有效的内存带宽取决于包含CPU的单元或进行内存访问的IO总线距离包含目标内存的单元 32 有多远。例如,连接到同一单元的CPU对内存的访问将比访问其他远程单元的内存经历更快的访问时间和 42 上,对一些架构的细节进行了抽象。与物理单元一样,软件节点可能包含0或更多的CPU、内存和/或IO 47 的任何CPU重新分配到代表有内存的单元的节点上。因此,在这些架构上,我们不能假设Linux将所有 48 的CPU与一个给定的节点相关联,会看到相同的本地内存访问时间和带宽。 66 默认情况下,Linux会尝试从执行请求的CPU被分配到的节点中满足内存分配请求。具体来说,Linux将试 76 系统管理员和应用程序设计者可以使用各种CPU亲和命令行接口,如taskset(1)和numactl(1),以及程 81 系统管理员可以使用控制组和CPUsets限制非特权用户在调度或NUMA命令和功能中可以指定的CPU和节点 [all …]
|
/linux/Documentation/translations/zh_CN/driver-api/ |
H A D | io_ordering.rst | 28 CPU A: spin_lock_irqsave(&dev_lock, flags) 29 CPU A: val = readl(my_status); 30 CPU A: ... 31 CPU A: writel(newval, ring_ptr); 32 CPU A: spin_unlock_irqrestore(&dev_lock, flags) 34 CPU B: spin_lock_irqsave(&dev_lock, flags) 35 CPU B: val = readl(my_status); 36 CPU B: ... 37 CPU B: writel(newval2, ring_ptr); 38 CPU B: spin_unlock_irqrestore(&dev_lock, flags) [all …]
|
/linux/arch/sparc/kernel/ |
H A D | cpu.c | 54 #define CPU(ver, _name) \ macro 68 CPU(0, "Fujitsu MB86900/1A or LSI L64831 SparcKIT-40"), 70 CPU(4, "Fujitsu MB86904"), 71 CPU(5, "Fujitsu TurboSparc MB86907"), 72 CPU(-1, NULL) 88 CPU(0, "LSI Logic Corporation - L64811"), 90 CPU(1, "Cypress/ROSS CY7C601"), 92 CPU(3, "Cypress/ROSS CY7C611"), 94 CPU(0xf, "ROSS HyperSparc RT620"), 95 CPU(0xe, "ROSS HyperSparc RT625 or RT626"), [all …]
|
/linux/Documentation/translations/zh_TW/ |
H A D | io_ordering.txt | 35 CPU A: spin_lock_irqsave(&dev_lock, flags) 36 CPU A: val = readl(my_status); 37 CPU A: ... 38 CPU A: writel(newval, ring_ptr); 39 CPU A: spin_unlock_irqrestore(&dev_lock, flags) 41 CPU B: spin_lock_irqsave(&dev_lock, flags) 42 CPU B: val = readl(my_status); 43 CPU B: ... 44 CPU B: writel(newval2, ring_ptr); 45 CPU B: spin_unlock_irqrestore(&dev_lock, flags) [all …]
|
/linux/Documentation/translations/zh_CN/admin-guide/ |
H A D | cputopology.rst | 11 如何通过sysfs将CPU拓扑导出 14 CPU拓扑信息通过sysfs导出。显示的项(属性)和某些架构的/proc/cpuinfo输出相似。它们位于 50 7) topology_sibling_cpumask: 仅入参CPU 51 8) topology_core_cpumask: 仅入参CPU 52 9) topology_cluster_cpumask: 仅入参CPU 53 10) topology_die_cpumask: 仅入参CPU 54 11) topology_book_cpumask: 仅入参CPU 55 12) topology_drawer_cpumask: 仅入参CPU 57 此外,CPU拓扑信息由/sys/devices/system/cpu提供,包含下述文件。输出对应的内部数据源放在 61 kernel_max: 内核配置允许的最大CPU下标值。[NR_CPUS-1] [all …]
|
/linux/Documentation/translations/zh_TW/admin-guide/ |
H A D | cputopology.rst | 11 如何通過sysfs將CPU拓撲導出 14 CPU拓撲信息通過sysfs導出。顯示的項(屬性)和某些架構的/proc/cpuinfo輸出相似。它們位於 50 7) topology_sibling_cpumask: 僅入參CPU 51 8) topology_core_cpumask: 僅入參CPU 52 9) topology_cluster_cpumask: 僅入參CPU 53 10) topology_die_cpumask: 僅入參CPU 54 11) topology_book_cpumask: 僅入參CPU 55 12) topology_drawer_cpumask: 僅入參CPU 57 此外,CPU拓撲信息由/sys/devices/system/cpu提供,包含下述文件。輸出對應的內部數據源放在 61 kernel_max: 內核配置允許的最大CPU下標值。[NR_CPUS-1] [all …]
|
/linux/Documentation/translations/zh_TW/cpu-freq/ |
H A D | cpu-drivers.rst | 30 1.2 Per-CPU 初始化 43 如果,你剛剛得到了一個全新的CPU/芯片組及其數據手冊,並希望爲這個CPU/芯片組添加cpufreq 51 運行在正確的CPU和正確的芯片組上。如果是,則使用cpufreq_register_driver()向 71 .get_intermediate 和 target_intermediate - 用於在改變CPU頻率時切換到穩定 74 .get - 返回CPU的當前頻率。 76 .bios_limit - 返回HW/BIOS對CPU的最大頻率限制值。 78 .exit - 一個指向per-policy清理函數的指針,該函數在CPU熱插拔過程的CPU_POST_DEAD 97 1.2 Per-CPU 初始化 100 每當一個新的CPU被註冊到設備模型中,或者當cpufreq驅動註冊自身之後,如果此CPU的cpufreq策 102 只爲某個策略調用一次,而不是對該策略管理的每個CPU調用一次。它需要一個 ``struct cpufreq_policy [all …]
|
/linux/Documentation/translations/zh_CN/cpu-freq/ |
H A D | cpu-drivers.rst | 30 1.2 Per-CPU 初始化 43 如果,你刚刚得到了一个全新的CPU/芯片组及其数据手册,并希望为这个CPU/芯片组添加cpufreq 51 运行在正确的CPU和正确的芯片组上。如果是,则使用cpufreq_register_driver()向 71 .get_intermediate 和 target_intermediate - 用于在改变CPU频率时切换到稳定 74 .get - 返回CPU的当前频率。 76 .bios_limit - 返回HW/BIOS对CPU的最大频率限制值。 78 .exit - 一个指向per-policy清理函数的指针,该函数在CPU热插拔过程的CPU_POST_DEAD 97 1.2 Per-CPU 初始化 100 每当一个新的CPU被注册到设备模型中,或者当cpufreq驱动注册自身之后,如果此CPU的cpufreq策 102 只为某个策略调用一次,而不是对该策略管理的每个CPU调用一次。它需要一个 ``struct cpufreq_policy [all …]
|
/linux/Documentation/driver-api/ |
H A D | io_ordering.rst | 18 CPU A: spin_lock_irqsave(&dev_lock, flags) 19 CPU A: val = readl(my_status); 20 CPU A: ... 21 CPU A: writel(newval, ring_ptr); 22 CPU A: spin_unlock_irqrestore(&dev_lock, flags) 24 CPU B: spin_lock_irqsave(&dev_lock, flags) 25 CPU B: val = readl(my_status); 26 CPU B: ... 27 CPU B: writel(newval2, ring_ptr); 28 CPU B: spin_unlock_irqrestore(&dev_lock, flags) [all …]
|
/linux/Documentation/translations/zh_CN/arch/arm64/ |
H A D | booting.txt | 41 这个术语来定义在将控制权交给 Linux 内核前 CPU 上执行的所有软件。 153 - 主 CPU 通用寄存器设置 159 - CPU 模式 162 CPU 必须处于 EL2(推荐,可访问虚拟化扩展)或非安全 EL1 模式下。 178 CNTFRQ 必须设定为计时器的频率,且 CNTVOFF 必须设定为对所有 CPU 183 通过内核启动的所有 CPU 在内核入口地址上必须处于相同的一致性域中。 184 这可能要根据具体实现来定义初始化过程,以使能每个CPU上对维护操作的 207 以上对于 CPU 模式、高速缓存、MMU、架构计时器、一致性、系统寄存器的 208 必要条件描述适用于所有 CPU。所有 CPU 必须在同一异常级别跳入内核。 210 引导装载程序必须在每个 CPU 处于以下状态时跳入内核入口: [all …]
|
/linux/Documentation/arch/x86/ |
H A D | topology.rst | 106 CPU. 144 The alternative Linux CPU enumeration depends on how the BIOS enumerates the 146 That has the "advantage" that the logical Linux CPU numbers of threads 0 stay 152 [package 0] -> [core 0] -> [thread 0] -> Linux CPU 0 158 [package 0] -> [core 0] -> [thread 0] -> Linux CPU 0 159 -> [core 1] -> [thread 0] -> Linux CPU 1 163 [package 0] -> [core 0] -> [thread 0] -> Linux CPU 0 164 -> [thread 1] -> Linux CPU 1 165 -> [core 1] -> [thread 0] -> Linux CPU 2 166 -> [thread 1] -> Linux CPU 3 [all …]
|
/linux/Documentation/translations/zh_TW/arch/arm64/ |
H A D | booting.txt | 45 這個術語來定義在將控制權交給 Linux 內核前 CPU 上執行的所有軟件。 157 - 主 CPU 通用寄存器設置 163 - CPU 模式 166 CPU 必須處於 EL2(推薦,可訪問虛擬化擴展)或非安全 EL1 模式下。 182 CNTFRQ 必須設定爲計時器的頻率,且 CNTVOFF 必須設定爲對所有 CPU 187 通過內核啓動的所有 CPU 在內核入口地址上必須處於相同的一致性域中。 188 這可能要根據具體實現來定義初始化過程,以使能每個CPU上對維護操作的 211 以上對於 CPU 模式、高速緩存、MMU、架構計時器、一致性、系統寄存器的 212 必要條件描述適用於所有 CPU。所有 CPU 必須在同一異常級別跳入內核。 214 引導裝載程序必須在每個 CPU 處於以下狀態時跳入內核入口: [all …]
|
/linux/Documentation/mm/ |
H A D | mmu_notifier.rst | 8 For secondary TLB (non CPU TLB) like IOMMU TLB or device TLB (when device use 9 thing like ATS/PASID to get the IOMMU to walk the CPU page table to access a 39 CPU-thread-0 {try to write to addrA} 40 CPU-thread-1 {try to write to addrB} 41 CPU-thread-2 {} 42 CPU-thread-3 {} 46 CPU-thread-0 {COW_step0: {mmu_notifier_invalidate_range_start(addrA)}} 47 CPU-thread-1 {COW_step0: {mmu_notifier_invalidate_range_start(addrB)}} 48 CPU-thread-2 {} 49 CPU-thread-3 {} [all …]
|