当前位置: 首页 > news >正文

/proc/sys/vm/下各参数含义

/proc/sys/vm/下各参数含义

  • admin_reserve_kbytes
    • 如何计算最小有效预留?
  • compact_memory
  • compaction_proactiveness
  • compact_unevictable_allowed
  • dirty_background_bytes
  • dirty_background_ratio
  • dirty_bytes
  • dirty_expire_centisecs
  • dirty_ratio
  • dirtytime_expire_seconds
  • dirty_writeback_centisecs
  • drop_caches
  • enable_soft_offline
  • extfrag_threshold
  • highmem_is_dirtyable
  • hugetlb_shm_group
  • laptop_mode
  • legacy_va_layout
  • lowmem_reserve_ratio
  • max_map_count
  • mem_profiling
  • memory_failure_early_kill
  • memory_failure_recovery
  • min_free_kbytes
  • min_slab_ratio
  • min_unmapped_ratio
  • mmap_min_addr
  • mmap_rnd_bits
  • mmap_rnd_compat_bits
  • nr_hugepages
  • hugetlb_optimize_vmemmap
  • nr_hugepages_mempolicy
  • nr_overcommit_hugepages
  • nr_trim_pages
  • numa_zonelist_order
  • oom_dump_tasks
  • oom_kill_allocating_task
  • overcommit_kbytes
  • overcommit_memory
  • overcommit_ratio
  • page-cluster
  • page_lock_unfairness
  • panic_on_oom
  • percpu_pagelist_high_fraction
  • stat_interval
  • stat_refresh
  • numa_stat
  • swappiness
  • unprivileged_userfaultfd
  • user_reserve_kbytes
  • vfs_cache_pressure
  • watermark_boost_factor
  • watermark_scale_factor
  • zone_reclaim_mode

admin_reserve_kbytes

系统中应为具备 cap_sys_admin 能力的用户保留的可用内存数量。
默认值: min(空闲页的3%, 8MB)
此值应足以让管理员在默认的 overcommit “guess” 模式下登录并终止进程(如有必要)。
注意:
• 在 overcommit 设置为 “never” 的系统中,需增加此值以覆盖恢复操作所用程序的完整虚拟内存大小。否则,root 可能无法登录以恢复系统。


如何计算最小有效预留?

  1. 基础组件:
    sshd 或 login + bash(或其他 shell) + top(或 ps、kill 等工具)
  2. overcommit “guess” 模式:
    • 计算各组件的驻留集大小(RSS)总和。
    • 在 x86_64 架构上约为 8MB。
  3. overcommit “never” 模式:
    • 取各组件虚拟大小(VSZ)的最大值,并加上 RSS 总和。
    • 在 x86_64 架构上约为 128MB。
    生效时机:
    修改此参数后,当任意应用程序请求内存时立即生效。

compact_memory

仅当配置 CONFIG_COMPACTION 时可用。向文件中写入 1 时,所有内存区域将被压缩,使空闲内存尽可能以连续块形式存在。例如,这对分配大页(huge pages)至关重要,尽管进程也可根据需要自行压缩内存。


compaction_proactiveness

此可调参数的取值范围为 [0, 100],默认值为 20。该参数决定后台压缩的激进程度。向此文件写入非零值会立即触发主动压缩;设置为 0 则禁用主动压缩。
注意:压缩会对系统产生显著影响,因为不同进程的页面会被移动,可能导致未预料的应用出现延迟峰值。内核会通过启发式算法避免浪费 CPU 周期(若检测到主动压缩未生效)。
谨慎设置极端值(如 100),因为这可能导致后台压缩活动过于频繁。


compact_unevictable_allowed

仅当配置 CONFIG_COMPACTION 时可用。设置为 1 时,允许压缩检查不可逐出的 LRU 页面(如被锁定的页面 mlocked pages)以进行压缩。适用于允许小页故障停顿以换取大连续空闲内存的系统。设置为 0 可阻止压缩移动不可逐出的页面。默认值为 1。
在 CONFIG_PREEMPT_RT 配置下,默认值为 0,以避免因压缩导致页故障(可能阻塞任务激活直至故障解决)。
defrag_mode
设置为 1 时,页面分配器会更积极地避免内存碎片化,并维持生成大页(huge pages)或高阶页面的能力。
建议在系统启动后立即启用此参数,因为一旦发生碎片化,其影响可能长期存在甚至不可逆。


dirty_background_bytes

包含后台内核刷写线程开始写回脏数据的脏内存阈值(以字节为单位)。
注意:
dirty_background_bytes 是 dirty_background_ratio 的对应参数,两者不可同时生效。写入其中一个参数后,系统会立即基于该值评估脏内存限制,而另一个参数读取时会显示为 0。


dirty_background_ratio

表示脏数据占可用内存(包含空闲页和可回收页)的百分比阈值,达到此比例时后台内核刷写线程将开始写回脏数据。
注意:
• 可用内存(total available memory)不等于系统总内存。
• dirty_background_ratio 与 dirty_background_bytes 互斥,仅能生效一个。


dirty_bytes

包含进程自行触发写回脏数据的脏内存阈值(以字节为单位)。
注意:
• dirty_bytes 是 dirty_ratio 的对应参数,两者不可同时生效。写入其中一个参数后,系统会立即基于该值评估脏内存限制,而另一个参数读取时会显示为 0。
• 最小允许值为两页(以字节计算),低于此值的设置会被忽略,并保留原有配置。


dirty_expire_centisecs

定义脏数据符合内核刷写线程写出条件的最长存活时间,单位为百分之一秒(即 1 个单位 = 0.01 秒)。当数据在内存中保持脏状态超过此间隔时,下次刷写线程唤醒时将被写出。


dirty_ratio

表示脏数据占可用内存(包含空闲页和可回收页)的百分比阈值,达到此比例时生成磁盘写入的进程将自行开始写回脏数据。
注意:
• 可用内存(total available memory)不等于系统总内存。
• dirty_ratio 与 dirty_bytes 互斥,仅能生效一个。

dirtytime_expire_seconds

当懒标记时间(lazytime)索引节点的页面持续被污染时,带有更新时间戳的索引节点可能永远无法获得写回磁盘的机会。此外,如果文件系统中唯一发生的变更是由访问时间(atime)更新导致的脏时间索引节点,系统将调度一个工作线程以确保该索引节点最终被推送到磁盘。此可调参数用于定义脏索引节点何时达到由内核刷写线程执行写回的“老龄”条件,同时也用作唤醒 dirtytime_writeback 线程的时间间隔。


dirty_writeback_centisecs

内核刷写线程会定期唤醒并将旧数据写入磁盘。此可调参数表示两次唤醒之间的时间间隔,单位为百分之一秒(1 个单位 = 0.01 秒)。
将其设置为 0 将完全禁用周期性写回。


drop_caches

向此文件写入值会导致内核丢弃干净的缓存(如页面缓存),并回收可回收的 slab 对象(如目录项 dentry 和索引节点 inode)。丢弃后,这些对象的内存将被释放。
• 释放页面缓存:
echo 1 > /proc/sys/vm/drop_caches
• 释放可回收的 slab 对象(包括目录项和索引节点):
echo 2 > /proc/sys/vm/drop_caches
• 释放 slab 对象和页面缓存:
echo 3 > /proc/sys/vm/drop_caches
此操作是非破坏性的,不会释放任何脏对象。若要增加被释放的对象数量,用户可在写入 /proc/sys/vm/drop_caches 前执行 sync 命令。这会减少系统中的脏对象数量,从而增加可丢弃的候选对象。
注意:
• 此文件并非用于控制各类内核缓存(如索引节点、目录项、页面缓存等)的增长。这些对象会在系统其他部分需要内存时由内核自动回收。
• 使用此文件可能导致性能问题。由于它会丢弃缓存对象,重新创建这些对象(尤其是高频使用的对象)可能消耗大量 I/O 和 CPU 资源。因此,不建议在测试或调试环境外的场景中使用。
日志信息:
使用此文件时,内核日志中可能出现类似以下信息:
cat (1234): drop_caches: 3
这些仅为信息记录,不代表系统存在问题。若需禁用此类日志,可向 drop_caches 写入 4(即设置第 2 位)。

enable_soft_offline

可纠正的内存错误在服务器上非常常见。软下线(soft-offline)是内核针对存在(过多)已纠正内存错误的内存页面的解决方案。
针对不同类型的页面,软下线的行为和代价不同:
• 原始错误页面:软下线会将正在使用的页面内容迁移到新的原始页面。
• 透明大页(Transparent HugePage)中的页面:软下线会先将透明大页拆分为原始页面,然后仅迁移存在错误的原始页面。结果是用户透明地减少了一个支持的大页,可能影响内存访问性能。
• HugeTLB 大页中的页面:软下线会先迁移整个 HugeTLB 大页(需消耗一个空闲大页作为迁移目标),随后原大页会被拆解为原始页面且无补偿,导致 HugeTLB 池容量减少 1。
在透明大页和 HugeTLB 场景中,用户需权衡可靠性(避免使用不稳定物理内存)与性能/容量的影响。
对所有架构,enable_soft_offline 控制是否启用软下线机制。设置为 1 时,内核会在需要时尝试软下线页面;设置为 0 时,内核会对软下线请求返回 EOPNOTSUPP(操作不支持)。默认值为 1。
需注意:将 enable_soft_offline 设为 0 后,以下软下线请求将不会执行:
• 来自 RAS 可纠正错误收集器的页面软下线请求;
• 在 ARM 架构上,来自 GHES 驱动的页面软下线请求;
• 在 PA-RISC 架构上,来自页面回收表(Page Deallocation Table)的页面软下线请求。


extfrag_threshold

此参数影响内核是否会通过紧凑内存或直接回收来满足高阶分配请求。debugfs 中的 extfrag/extfrag_index 文件显示系统各区域不同阶的碎片化指数:
• 接近 0:表示因内存不足导致分配失败;
• 接近 1000:表示因碎片化导致分配失败;
• -1:表示只要满足水位阈值,分配总能成功。
若某区域的碎片化指数 ≤ extfrag_threshold,内核不会紧凑该区域的内存。默认值为 500。


highmem_is_dirtyable

仅适用于启用 CONFIG_HIGHMEM 的系统(32位系统)。
此参数控制高内存是否被纳入脏页写入节流机制。默认情况下不启用,即仅内核可直接可见/可用的低内存会被计入脏页。这可能导致以下问题:
• 在大内存系统中,若低内存基本耗尽,写入者可能过早触发节流,导致流式写入变慢;
• 修改此值为非零:允许更多内存被标记为脏页,使写入者能更高效地将数据刷入存储。但需注意风险:某些写入操作(如直接块设备写入)仅能使用低内存,可能因无节流限制而填满低内存的脏页,从而增加 OOM 杀手触发的概率。

hugetlb_shm_group

hugetlb_shm_group 包含允许创建使用大页(Hugetlb)的 SysV 共享内存段的组 ID。


laptop_mode

laptop_mode 是一个控制“笔记本模式”的开关。该模式控制的所有内容详见《如何使用 Laptop Mode 节省电池电量》。


legacy_va_layout

若此 sysctl 参数非零,将禁用新的 32 位 mmap 布局,内核会为所有进程使用旧版(2.4 内核)的地址空间布局。


lowmem_reserve_ratio

场景与风险
在高内存(highmem)机器的某些专用工作负载中,允许进程从“低内存”区域分配内存可能是危险的。因为此类内存可能通过 mlock() 系统调用被锁定,或因交换空间不足而无法回收。
在大型高内存机器上,缺乏可回收的低内存可能导致严重后果。
内核保护机制
Linux 页面分配器通过一种机制防止可能使用高内存的分配过度消耗低内存。这意味着部分低内存会被保护,避免被锁定到用户空间的不可回收内存中。
(类似地,旧的 16MB ISA DMA 区域也受此机制保护,防止被高内存或低内存分配占用。)
参数作用
lowmem_reserve_ratio 决定内核在保护低内存区域时的激进程度。
典型应用场景:
• 机器使用高内存或 ISA DMA;
• 应用程序使用 mlock();
• 系统未配置交换空间。
此时应调整 lowmem_reserve_ratio 的值。
参数结构
lowmem_reserve_ratio 是一个数组,可通过读取文件查看:

 % cat /proc/sys/vm/lowmem_reserve_ratio
256     256     32

实际计算逻辑
内核并非直接使用这些值,而是通过公式计算每个内存区的“保护页数”(Protection Pages)。例如,在 /proc/zoneinfo 中可能显示如下内容(以 x86-64 为例):

Node 0, zone      DMApages free     1355min      3low      3high     4::numa_other   0protection: (0, 2004, 2004, 2004)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^pagesetscpu: 0 pcp: 0:

保护页数会与水位(watermark)结合,判断是否允许从该内存区分配页面。例如:
• 若请求普通页面(索引=2),且当前空闲页数(1355)小于 watermark + protection[2](4 + 2004 = 2008),则跳过此内存区;
• 若请求 DMA 页面(索引=0),则仅使用 protection[0](值为 0)。
计算公式
对于 zone[i] 的保护值 protection[j]:
• 当 i < j:
protection[j] = ∑(从 zone[i+1] 到 zone[j] 的 managed_pages) / lowmem_reserve_ratio[i]
• 当 i = j:保护值为 0(无需保护自身);
• 当 i > j:无意义,通常为 0。
默认值
• DMA 或 DMA32 区域:256(即 1/256,约占高内存区总页数的 0.39%);
• 其他区域:32。
调整建议
• 减小 lowmem_reserve_ratio 的值可保护更多低内存页(例如设为 1 表示保护 100%);
• 值小于 1 时完全禁用保护。


max_map_count

此文件定义进程可拥有的最大内存映射区域数量。内存映射区域可能由以下操作产生:malloc 的副作用、直接调用 mmap/mprotect/madvise,或加载共享库。
典型场景:
• 多数应用只需不到一千个映射;
• 某些程序(如 malloc 调试器)可能消耗大量映射(例如每次分配生成一两个映射)。
默认值:65530。

mem_profiling

内存分析(需开启 CONFIG_MEM_ALLOC_PROFILING=y)
• 1:启用内存分析功能。
• 0:禁用内存分析功能。
说明:
启用内存分析会为所有内存分配操作引入少量性能开销。默认值由 CONFIG_MEM_ALLOC_PROFILING_ENABLED_BY_DEFAULT 配置决定。


memory_failure_early_kill

内存错误早期终止策略
控制硬件后台检测到不可纠正内存错误(通常是内存条的双位错误)且内核无法处理时如何终止进程。在某些情况下(例如页面在磁盘上仍有有效副本),内核会透明处理错误,不影响应用;若数据无其他最新副本,则终止进程以防止数据损坏扩散。
• 1:检测到错误后立即终止映射了受损且不可重新加载页面的所有进程。注:内核内部分配数据或交换缓存页等少数类型页面不支持此策略,但对多数用户页有效。
• 0:仅从所有进程中取消映射受损页面,仅当进程尝试访问该页面时终止目标进程。
实现细节:
通过可捕获的 SIGBUS 信号(带 BUS_MCEERR_AO 标志)终止进程,允许进程自行处理。此功能仅在支持高级机器检查处理的硬件平台上激活,且依赖硬件能力。应用程序可通过 PR_MCE_KILL 系统调用(prctl)单独覆盖此设置。


memory_failure_recovery

内存故障恢复(需平台支持)
• 1:尝试恢复。
• 0:内存故障时直接触发内核恐慌(panic)。


min_free_kbytes

最小空闲内存(单位:KB)
强制 Linux 虚拟内存(VM)保留的最小空闲内存量。VM 使用此值计算系统中每个低内存区的 watermark[WMARK_MIN] 阈值,按比例为每个低内存区保留一定数量的空闲页。
警告:
• 若值低于 1024KB,系统可能出现隐蔽故障,并在高负载下易发生死锁。
• 若值设置过高,可能导致系统立即触发 OOM(内存不足终止进程)。


min_slab_ratio

最小 slab 比例(仅 NUMA 内核)
定义为每个内存区总页数的百分比。当进行内存区回收(从本地区回退到全局回收)时,若某区可回收的 slab 页占比超过此值,则回收 slab 页。此机制确保 slab 增长在 NUMA 系统中受控,即使全局回收较少发生。默认值为 5%。
注意:
slab 回收按内存区/节点触发,当前回收流程不限定节点且可能较慢。


min_unmapped_ratio

最小未映射页比例(仅 NUMA 内核)
定义为每个内存区总页数的百分比。仅当某区可回收的未映射页占比超过此值时,才触发内存区回收。
• 若 zone_reclaim_mode 包含值 4,则比较对象包括文件支持的未映射页(含交换缓存页和 tmpfs 文件)。
• 否则,仅考虑普通文件支持的未映射页(排除 tmpfs 等)。
默认值为 1%。


mmap_min_addr

mmap 起始地址限制
限制用户进程可通过 mmap 映射的最低地址空间。由于内核空指针解引用漏洞可能基于用户空间前几页内存的信息,禁止用户进程写入这些区域。默认值为 0(无保护),设置为 64k 可允许多数应用正常运行,同时防范潜在的内核漏洞。


mmap_rnd_bits

mmap 随机化位数
用于选择 mmap 分配的虚拟内存区域(VMA)基址的随机偏移位数,仅适用于支持地址空间随机化(ASLR)的架构。此值受限于架构支持的最小/最大值,可通过 /proc/sys/vm/mmap_rnd_bits 动态调整。


mmap_rnd_compat_bits

兼容模式 mmap 随机化位数
用于选择运行在兼容模式下的应用通过 mmap 分配的 VMA 基址的随机偏移位数,仅适用于支持 ASLR 的架构。此值受限于架构支持的最小/最大值,可通过 /proc/sys/vm/mmap_rnd_compat_bits 动态调整。

nr_hugepages

更改大页内存池的最小大小
详见 https://www.kernel.org/doc/html/latest/admin-guide/mm/hugetlbpage.html


hugetlb_optimize_vmemmap

此选项在 struct page 结构体(定义于 include/linux/mm_types.h)的大小非 2 的幂次方时不可用(异常系统配置可能导致此情况)。
启用(设为 1)或禁用(设为 0)HugeTLB Vmemmap 优化(HVO)。
• 启用后:从伙伴分配器后续分配的 HugeTLB 页面的 vmemmap 页将按优化规则分配(每 2MB HugeTLB 页对应 7 个 vmemmap 页,每 1GB HugeTLB 页对应 4095 个 vmemmap 页),但已分配的 HugeTLB 页不会优化。当这些优化过的 HugeTLB 页从大页池释放回伙伴分配器时,代表该范围的 vmemmap 页需重新映射,且先前丢弃的 vmemmap 页需重新分配。
o 适用场景:若 HugeTLB 页是“即时”分配的(例如未显式通过 nr_hugepages 分配,而是仅设置 nr_overcommit_hugepages,导致超额提交的 HugeTLB 页动态分配),需权衡内存节省与分配/释放 HugeTLB 页时的额外开销(比未优化时慢约 2 倍)。
o 注意:系统内存压力较大时,可能因 vmemmap 页分配失败而无法将 HugeTLB 页从大页池释放回伙伴分配器,需稍后重试。
• 禁用后:从伙伴分配器后续分配的 HugeTLB 页的 vmemmap 页不再优化,分配时的额外开销消失,但已优化的 HugeTLB 页不受影响。
o 清除优化:若需确保系统中无优化过的 HugeTLB 页,可先将 nr_hugepages 设为 0,再禁用此选项。注意,将 nr_hugepages 写为 0 会使所有“正在使用”的 HugeTLB 页变为过剩页,这些过剩页仍保持优化状态直至不再使用。需等待这些页释放后,系统中才无优化页。


nr_hugepages_mempolicy

在特定 NUMA 节点集上运行时调整大页池大小
详见 https://www.kernel.org/doc/html/latest/admin-guide/mm/hugetlbpage.html


nr_overcommit_hugepages

更改大页池的最大大小。最大值为 nr_hugepages + nr_overcommit_hugepages。
详见 https://www.kernel.org/doc/html/latest/admin-guide/mm/hugetlbpage.html


nr_trim_pages

仅适用于 NOMMU 内核
调整对齐到 2 的幂次方的 NOMMU 映射分配的多余页面修剪行为。
• 值为 0:完全禁用分配修剪。
• 值为 1:激进修剪多余页面。
• 值 ≥ 1:作为触发修剪的阈值(水印)。
默认值:1
详见 https://www.kernel.org/doc/html/latest/admin-guide/mm/nommu-mmap.html

numa_zonelist_order

此 sysctl 仅适用于 NUMA 且已被弃用。除节点顺序外,其他任何顺序均会导致失败!
“内存分配来源”由 zonelist 控制。
(此文档忽略 ZONE_HIGHMEM/ZONE_DMA32 以简化说明。您可能可以将 ZONE_DMA 视为 ZONE_DMA32…)
非 NUMA 场景:GFP_KERNEL 的 zonelist 顺序如下:
ZONE_NORMAL -> ZONE_DMA
这意味着,GFP_KERNEL 的内存分配请求仅在 ZONE_NORMAL 不可用时才会从 ZONE_DMA 分配。
NUMA 场景:假设为双节点 NUMA,且以下是节点 0 的 GFP_KERNEL 的 zonelist,可定义两种顺序类型:
• (A) 节点顺序:Node(0) ZONE_NORMAL -> Node(0) ZONE_DMA -> Node(1) ZONE_NORMAL
• (B) 区域顺序:Node(0) ZONE_NORMAL -> Node(1) ZONE_NORMAL -> Node(0) ZONE_DMA
类型 (A) 为节点 0 上的进程提供最佳局部性,但会在 ZONE_NORMAL 耗尽前使用 ZONE_DMA,这会增加 ZONE_DMA OOM(内存不足)的风险(因 ZONE_DMA 通常较小)。
类型 (B) 无法提供最佳局部性,但对 ZONE_DMA 的 OOM 更鲁棒。
• 节点顺序([Nn]ode):按节点排序,再按节点内的区域排序。
• 区域顺序([Zz]one):按区域类型排序,再按区域内的节点排序。
• 指定 [Dd]efault 以请求自动配置。
默认行为:
• 32 位系统:需为内核保留 ZONE_NORMAL,因此选择区域顺序。
• 64 位系统:需要 DMA32/DMA 的设备较少,因此选择节点顺序。
建议保持默认顺序,除非系统/应用程序明确需要调整。


oom_dump_tasks

启用后,当内核触发 OOM 杀进程时,会生成系统范围的任务转储(不包括内核线程),包含以下信息:
pid, uid, tgid, vm size, rss, pgtables_bytes, swapents, oom_score_adj 和任务名称。
此功能有助于诊断 OOM 触发原因、识别导致问题的进程,以及理解 OOM 杀手的选择逻辑。
• 设置为 0:抑制此信息。对于拥有数千任务的超大型系统,可能不希望在 OOM 时因记录所有任务状态而产生性能损耗。
• 设置为非零:每次 OOM 杀手实际终止内存占用过高的进程时,均会输出此信息。
默认值:1(启用)。


oom_kill_allocating_task

控制是否在 OOM 时终止触发内存分配失败的进程。
• 设置为 0:OOM 杀手会扫描整个任务列表,基于启发式策略选择进程终止(通常选择占用内存过多且释放后能回收大量内存的进程)。
• 设置为非零:直接终止触发 OOM 的进程,避免扫描任务列表的开销。
若 panic_on_oom 被启用,则优先于此参数设置。
默认值:0。


overcommit_kbytes

当 overcommit_memory 设置为 2 时,已提交的地址空间不得超过交换分区大小加上此参数指定的物理内存量(单位:KB)。
注意:overcommit_kbytes 与 overcommit_ratio 互斥,同一时间只能生效一个。设置其中一个会使另一个失效(读取时显示为 0)。


overcommit_memory

此值控制内存过度提交策略:
• 0:内核会比较用户态内存请求大小与总内存+交换分区,拒绝明显的过度提交。
• 1:内核假设内存始终充足,直到实际耗尽。
• 2:内核采用“永不过度提交”策略,尝试完全避免内存超限(受 user_reserve_kbytes 影响)。
此功能对许多程序有用,因为它们会通过 malloc 预分配大量内存备用,但实际使用较少。
默认值:0。
参考:https://www.kernel.org/doc/html/latest/mm/overcommit-accounting.html 和 mm/util.c::__vm_enough_memory()。


overcommit_ratio

当 overcommit_memory 设置为 2 时,已提交的地址空间不得超过交换分区大小加上此参数指定的物理内存百分比。


page-cluster

控制从交换空间读取连续页时的单次最大页数。这是交换读前置的对应参数,所谓的“连续”指在交换空间中连续(即曾被一起换出)。
此值为对数计算:
• 0:1 页(禁用交换读前置)。
• 1:2 页。
• 2:4 页,依此类推。
默认值:3(每次读取 8 页)。若工作负载涉及频繁交换,调整此值可能略有优化。
注意:较低值可降低初始缺页的延迟,但可能导致后续缺页需多次 I/O(若本可通过前置读取合并)。

page_lock_unfairness

此值决定页锁在等待进程持有时可被抢占的次数上限。当锁被抢占次数达到本文件指定的阈值(默认为5次)后,将启用“公平锁交接”语义,此时仅在锁可被成功获取时才会唤醒等待进程。


panic_on_oom

此参数用于启用或禁用内存不足(OOM)时的内核恐慌机制。
• 设置为0:内核会终止某些异常进程(由OOM杀手处理)。通常OOM杀手能清理异常进程并保证系统存活。
• 设置为1:当发生OOM时,内核会恐慌。但若某进程通过mempolicy/cpusets限制使用特定节点内存,且仅这些节点耗尽内存,则OOM杀手可能终止单个进程而非触发恐慌(因其他节点内存可能仍充足,系统整体状态未必致命)。
• 设置为2:即使上述情况也会强制触发内核恐慌,包括内存隔离场景(如内存cgroup)下的OOM。
默认值:0。
注意:1和2适用于集群故障切换场景,需根据故障策略选择。
panic_on_oom=2+kdump可提供强调试工具(如崩溃快照)以分析OOM原因。


percpu_pagelist_high_fraction

此参数定义每个内存区(zone)中可分配给每CPU页面列表的页比例上限,具体值按在线CPU数量动态划分。最小值为8(即不允许每区超过1/8的页存储在每CPU页面列表中)。用户可通过指定数值(如100)控制每区分配给每CPU列表的比例(如1/100)。
注意:
• 每CPU页面列表的批量大小不随此值变化,因此分配延迟不受影响。
• 初始值为0,表示内核根据区低水位和本地在线CPU数自动计算高水位标记。若写入0,则恢复默认行为。


stat_interval

虚拟机统计信息(如/proc/meminfo)的更新时间间隔,默认1秒。


stat_refresh

任何读取或写入(仅root权限)操作会将所有每CPU内存统计信息汇总到全局值,用于生成更精确的报告(例如执行cat /proc/sys/vm/stat_refresh /proc/meminfo)。
副作用:
• 检查负值总和(报告中显示为0),若发现负值则返回EINVAL错误并在dmesg中记录警告(已知部分统计偶尔为负,但无实际影响,相关错误已抑制)。


numa_stat

此接口允许运行时配置NUMA统计信息。
• 当页分配性能成为瓶颈且可容忍工具异常/精度下降时:
echo 0 > /proc/sys/vm/numa_stat
• 当页分配性能正常且需保证工具兼容性时:
echo 1 > /proc/sys/vm/numa_stat


swappiness

此参数定义交换(swap)与文件系统分页的相对IO成本,取值范围0-200。
• 100:假设两者IO成本相等,内存压力会均衡作用于页缓存和交换页。
• <100:交换IO更昂贵,倾向保留内存。
• >100:交换IO更廉价,倾向交换。
默认值:60。
优化建议:
• 对于内存交换(如zram/zswap)或交换位于比文件系统更快的设备时,可设置>100。例如,若交换设备随机IO速度是文件系统的2倍,则swappiness=133(x+2x=200,2x=133.33)。
• 0:仅在自由页和文件页低于区高水位时触发交换。


unprivileged_userfaultfd

此标志控制非特权用户使用userfaultfd系统调用的模式:
• 设置为0:限制非特权用户仅能在用户模式处理页故障。此时,无SYS_CAP_PTRACE权限的用户必须传递UFFD_USER_MODE_ONLY标志才能成功调用。禁止内核模式故障处理可降低某些漏洞利用风险。
• 设置为1:允许非特权用户无限制使用userfaultfd。
默认值:0。
补充:可通过/dev/userfaultfd设备替代userfaultfd(2)进行权限控制,详见Userfaultfd文档(https://www.kernel.org/doc/html/latest/admin-guide/mm/userfaultfd.html)。

user_reserve_kbytes

当 overcommit_memory 设置为 2(“永不超额提交”模式)时,系统会保留当前进程大小的 3% 与 user_reserve_kbytes 中的较小值作为自由内存的预留空间。此机制旨在防止用户启动单个占用大量内存的进程,导致无法恢复(例如杀死该进程)。
user_reserve_kbytes 默认值为当前进程大小的 3% 与 128MB 中的较小值。
若将其减少为 0,则允许用户进程分配除 admin_reserve_kbytes 外的所有可用内存。任何后续命令均会因内存不足失败,提示 “fork: Cannot allocate memory”。
修改此参数会在应用程序请求内存时立即生效。


vfs_cache_pressure

此百分比值控制内核回收用于目录项(dentry)和 inode 对象缓存的内存的倾向性。
默认值 vfs_cache_pressure=100 时,内核会以与页缓存(pagecache)和交换缓存(swapcache)“公平”的速度回收 dentry 和 inode。降低此值会使内核更倾向于保留 dentry 和 inode 缓存;若设置为 0,内核将因内存压力完全停止回收 dentry 和 inode,这可能导致内存耗尽(OOM)。高于 100 的值会使内核优先回收 dentry 和 inode 缓存。
将 vfs_cache_pressure 显著提升至 100 以上可能对性能产生负面影响。回收代码需获取多种锁以查找可释放的目录和 inode 对象,例如 vfs_cache_pressure=1000 时,系统会尝试回收比实际需求多 10 倍的可释放对象。


watermark_boost_factor

此因子控制内存碎片化时的回收力度。当不同移动性的页混合存在于页块(pageblock)中时,它定义了需回收的高位水印(high watermark)百分比。其目标是减少未来内存紧凑(compaction)的工作量,并提高高阶分配(如 SLUB 分配、透明大页 THP 和 hugetlbfs 页)的成功率。
为与 watermark_scale_factor 参数协同工作,此值的单位为万分之一(1/10,000)。默认值 15,000 表示当页块因碎片化混合时,最多回收高位水印的 150%。回收量由近期发生的碎片化事件次数决定。若此值小于一个页块大小(例如 64 位 x86 系统的 2MB),则至少回收一个页块的页数。设置为 0 将禁用此特性。


watermark_scale_factor

此因子控制 kswapd(内核交换守护进程)的激进程度,定义节点/系统中需保留的内存量,以决定何时唤醒或休眠 kswapd。
单位为万分之一(1/10,000),默认值 10 表示水位标记间距为节点/系统可用内存的 0.1%。最大值为 3000(即 30% 内存)。
若线程频繁触发直接回收(allocstall)或 kswapd 过早休眠(kswapd_low_wmark_hit_quickly),可能表明 kswapd 为降低延迟所维护的自由页数过少,无法应对系统的分配突发。此时可通过调整此参数调节 kswapd 的激进程度。


zone_reclaim_mode

zone_reclaim_mode 允许设置当内存区域(zone)耗尽时回收内存的策略激进程度。若设置为 0,则不进行区域回收,分配将从其他区域或节点满足。
此值为以下选项的按位或组合:

  1. 启用区域回收
  2. 回收时写出脏页
  3. 回收时交换页面
    默认情况下,zone_reclaim_mode 被禁用。对于文件服务器或受益于数据缓存的工作负载,应保持禁用,因为缓存效果通常比数据局部性更重要。
    启用建议:
    • 若已知工作负载按 NUMA 节点分区且访问远程内存会导致明显性能下降,可启用部分或全部回收模式。分配器会在跨节点分配前采取额外操作。
    • 允许回收写出脏页:可限制大量写入数据的进程污染其他节点的内存。当区域填满时,回收会写出脏页以限制进程,虽可能降低单个进程性能(无法占用全部系统内存缓冲写操作),但可保护其他节点的内存,避免影响其他进程。
    • 允许常规交换:限制分配仅在本地节点发生,除非被内存策略或 cpuset 配置显式覆盖。

注:是https://www.kernel.org/doc/html/latest/admin-guide/sysctl/vm.html该文的AI翻译,仅供参考,后续有时间再根据内核源码,对关键参数进行详细分析

相关文章:

/proc/sys/vm/下各参数含义

/proc/sys/vm/下各参数含义 admin_reserve_kbytes如何计算最小有效预留&#xff1f; compact_memorycompaction_proactivenesscompact_unevictable_alloweddirty_background_bytesdirty_background_ratiodirty_bytesdirty_expire_centisecsdirty_ratiodirtytime_expire_seconds…...

算法分析与设计——动态规划复习题(待更新

检测题&#xff1a; 组合优化问题的目标函数通常不包括以下哪种形式&#xff1f; A. 需最小化的代价函数 B. 需最大化的回报函数 C. 需满足的硬约束条件 D. 需最小化的能量函数 答案&#xff1a;C 关于约束条件的说法&#xff0c;以下哪项是正确的&#xff1f; A. 硬约束可以通…...

【EasyPan】项目常见问题解答(自用持续更新中…)

EasyPan 网盘项目介绍 一、项目概述 EasyPan 是一个基于 Vue3 SpringBoot 的网盘系统&#xff0c;支持文件存储、在线预览、分享协作及后台管理&#xff0c;技术栈涵盖主流前后端框架及中间件&#xff08;MySQL、Redis、FFmpeg&#xff09;。 二、核心功能模块 用户认证 注册…...

基于Java的不固定长度字符集在指定宽度和自适应模型下图片绘制生成实战

目录 前言 一、需求介绍 1、指定宽度生成 2、指定列自适应生成 二、Java生成实现 1、公共方法 2、指定宽度生成 3、指定列自适应生成 三、总结 前言 在当今数字化与信息化飞速发展的时代&#xff0c;图像的生成与处理技术正日益成为众多领域关注的焦点。从创意设计到数…...

电子电器架构 ---软件定义汽车的电子/电气(E/E)架构

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…...

Stable Diffusion 制作角色三视图

对于漫画创作&#xff0c;DPM 2M Karras和UniPC是高效且稳定的首选采样方法&#xff0c;结合Karras噪声调度可显著提升画面质量。若需进一步优化&#xff0c;可参考具体场景调整步数并辅以ControlNet等工具。避免使用随机性强的采样器&#xff08;如Euler a&#xff09;&#x…...

C++--负载均衡在线OJ

这是本人写的第二个项目&#xff0c;相比第一个代码量更少一些&#xff0c;但是此项目涉及linux中的内容更多&#xff0c;同样是干货满满&#xff0c;实现了 类似 leetcode 的题⽬列表在线编程功能&#xff0c;地址仓库&#xff1a;xwy/C学习项目 1. 所用技术与开发环境 C11和…...

【数字图像处理】彩色图像处理(1)

研究彩色图像处理的原因 1&#xff1a;利用颜色信息&#xff0c;可以简化目标物的区分&#xff0c;以及从场景中提取出目标物 2&#xff1a;人眼对颜色非常敏感&#xff0c;可以分辨出来几千种颜色色调和亮度&#xff0c;却只能分别出几十种灰度 彩色图像分类 伪彩色图像处理&…...

【Easylive】consumes = MediaType.MULTIPART_FORM_DATA_VALUE 与 @RequestPart

【Easylive】项目常见问题解答&#xff08;自用&持续更新中…&#xff09; 汇总版 consumes MediaType.MULTIPART_FORM_DATA_VALUE 的作用 1. 定义请求的数据格式 • 作用&#xff1a;告诉 Feign 和 HTTP 客户端&#xff0c;这个接口 接收的是 multipart/form-data 格式的…...

【python】copy deepcopy 赋值= 对比

上结论 写法是否独立是否安全修改copy() &#xff08;用于一维列表&#xff09;✅ 是独立副本✅ 安全deepcopy() &#xff08;多层结构时用&#xff09;✅ 是完全副本✅ 安全直接赋值&#xff08;&#xff09;❌ 是引用❌ 改一个会影响另一个 一、.copy() 和 deepcopy() 有什…...

环形缓冲区容量耗尽解决方案

以下是针对环形缓冲区在时间窗口统计场景中容量耗尽问题的解决方案设计及优劣分析&#xff0c;结合搜索结果中的技术原理和工程实践&#xff1a; 一、核心问题定位 当环形缓冲区容量耗尽时&#xff0c;新数据覆盖旧数据会导致&#xff1a; 时间窗口统计失真&#xff1a;无法准…...

蓝桥杯 17.发现环

发现环 原题目链接 题目描述 小明的实验室有 N 台电脑&#xff0c;编号 1 ⋯ N。 原本这 N 台电脑之间有 N−1 条数据链接相连&#xff0c;恰好构成一个树形网络。 在树形网络上&#xff0c;任意两台电脑之间有唯一的路径相连。 不过在最近一次维护网络时&#xff0c;管理…...

数据库服务器架构

ORM ORM&#xff08;Object Relational Mapping&#xff09;&#xff1a;对象与关系数据之间的映射 映射关系表&#xff1a; 类&#xff08;class&#xff09;—— 数据库的表&#xff08;table&#xff09; 对象&#xff08;object&#xff09;——记录&#xff08;record…...

Netty前置基础知识之BIO、NIO以及AIO理论详细解析和实战案例

前言 Netty是什么&#xff1f; Netty 是一个基于 Java 的 ​高性能异步事件驱动网络应用框架&#xff0c;主要用于快速开发可维护的协议服务器和客户端。它简化了网络编程的复杂性&#xff0c;特别适合构建需要处理海量并发连接、低延迟和高吞吐量的分布式系统。 1)Netty 是…...

职坐标IT培训:人工智能职业跃迁路径

随着人工智能时代全面来临&#xff0c;职业发展格局正经历颠覆性重构。政策端&#xff0c;《新一代人工智能发展规划》与《生成式AI服务管理办法》双轨并行&#xff0c;既为行业注入动能&#xff0c;也划定了技术应用的合规边界。在此背景下&#xff0c;从业者需构建覆盖基础理…...

Redis 的单线程模型对微服务意味着什么?需要注意哪些潜在瓶颈?

Redis 的单线程模型是其高性能的关键因素之一&#xff0c;但这在微服务场景下既是优势&#xff0c;也可能带来潜在的瓶颈。理解这一点有助于我们在微服务架构中更好的使用Redis。 Redis 单线程模型的核心&#xff1a; 命令处理是单线程的: Redis 使用了一个主线程来接收客户端…...

Redis 有序集合(Sorted Set)

Redis 有序集合&#xff08;Sorted Set&#xff09; 以下从基础命令、内部编码和使用场景三个维度对 Redis 有序集合进行详细解析&#xff1a; 一、基础命令 命令时间复杂度命令含义zadd key score member [score member …] O ( k l o g ( n ) ) O(klog(n)) O(klog(n))&…...

C语言中联合体(Union)和结构体(Struct)的嵌套用法

联合体和结构体是C语言中两种重要的复合数据类型&#xff0c;它们可以相互嵌套使用&#xff0c;为复杂数据的表示提供了灵活的方式。 1. 联合体(Union)基础 联合体是一种特殊的数据类型&#xff0c;允许在相同的内存位置存储不同的数据类型。联合体的所有成员共享同一块内存空…...

Rust: 从内存地址信息看内存布局

内存布局其实有几个&#xff1a;address&#xff08;地址&#xff09;、size&#xff08;大小&#xff09;、alignment&#xff08;对齐位数&#xff0c;2 的自然数次幂&#xff0c;2&#xff0c;4&#xff0c;8…&#xff09;。 今天主要从address来看内存的布局。 下面以Str…...

分类算法中one-vs-rest策略和one-vs-one 策略的区别是什么?

LGBMClassifier 参数中&#xff0c;常使用objective: 这个参数定义了模型的目标函数。 而对于多分类问题&#xff0c;通常使用 multiclass 或者 multiclassova。multiclass 表示 one-vs-rest 策略&#xff0c;而 multiclassova 则是 one-vs-one 策略。 在机器学习领域&#x…...

新能源汽车充电桩运营模式的发展与优化路径探析

摘要&#xff1a;以民用新能源汽车充电桩为研究对象&#xff0c;在分析政府主导型、电网企业主导型及汽车厂商主导型三种运营模式特点的基础上&#xff0c;结合我国新能源汽车发展现状&#xff0c;提出汽车厂商与电网企业协同共建的联盟模式。通过构建涵盖政府补贴、建设成本与…...

【前端样式】用 aspect-ratio 实现等比容器:视频封面与图片占位的终极解决方案

在网页开发中&#xff0c;处理视频封面、图片卡片等需要固定比例的容器一直是前端工程师的必修课。本文将以 aspect-ratio 属性为核心&#xff0c;深入探讨如何优雅实现等比容器&#xff0c;并通过完整代码示例和常见问题解析&#xff0c;助你彻底掌握这一现代布局利器。 目录…...

redis常用的五种数据类型

redis常用的五种数据类型 文档 redis单机安装redis数据类型-位图bitmap 说明 官网操作命令指南页面&#xff1a;https://redis.io/docs/latest/commands/?nameget&groupstring 常用命令 keys *&#xff1a;查看所有键exists k1 k2&#xff1a;键存在个数type k1&…...

Cribl 利用表向event 中插入相应的字段-example-02

Working with Lookups – Example 2 ​ Let’s assume we have the following lookup file, and given both the fields impact and priority in an event, we would like to add a corresponding ingestion-time field called severity. cisco_sourcefire_severity.csv im…...

SystemWeaver详解:从入门到精通的深度实战指南

SystemWeaver详解&#xff1a;从入门到精通的深度实战指南 文章目录 SystemWeaver详解&#xff1a;从入门到精通的深度实战指南一、SystemWeaver环境搭建与基础配置1.1 多平台安装全流程 二、新手必学的十大核心操作2.1 项目创建全流程2.2 建模工具箱深度解析 三、需求工程与系…...

归一化对C4.5决策树无效的数学原理与实证分析

一、引言 在机器学习的预处理流程中&#xff0c;归一化&#xff08;Normalization&#xff09;常被视作提升模型性能的"银弹"。然而&#xff0c;这一经验法则在决策树算法中却遭遇挑战——尤其对基于信息增益比的C4.5算法&#xff0c;归一化操作几乎不产生任何效果。…...

# 05_Elastic Stack 从入门到实践(五)

05_Elastic Stack 从入门到实践(五) 一、Elasticsearch集群之分布式文档(文档的写操作、搜索操作) 1、文档的写操作 1)新建、索引和删除请求都是写(write)操作,它们必须在主分片上成功完成才能复制到相关的复制分片上。 2)下面我们罗列在主分片和复制分片上成功新建、…...

n8n 中文系列教程_05.如何在本机部署/安装 n8n(详细图文教程)

n8n 是一款强大的开源工作流自动化工具&#xff0c;可帮助你连接各类应用与服务&#xff0c;实现自动化任务。如果你想快速体验 n8n 的功能&#xff0c;本机部署是最简单的方式。本教程将手把手指导你在 Windows 或 MacOS 上通过 Docker 轻松安装和运行 n8n&#xff0c;无需服务…...

Spark,从0开始配置Spark的local模式

1.启动虚拟机 2.通过finalshell连接虚拟机&#xff0c;并上传安装文件到 /opt/software下 3.解压spark安装文件到/opt/module下 tar -zxvf spark-3.3.1-bin-hadoop3.tgz -C /opt/module/ 4.重命名&#xff0c;把解压后的文件夹改成spark-local。因为后续我们还会使用其他的配置…...

策略模式:优雅应对多变的业务需求

一、策略模式基础概念 策略模式&#xff08;Strategy Pattern&#xff09; 是一种行为型设计模式&#xff0c;它通过定义一系列可互换的算法族&#xff0c;并将每个算法封装成独立的策略类&#xff0c;使得算法可以独立于使用它的客户端变化。策略模式的核心思想是 “将算法的…...

性能比拼: Nginx vs Apache

本内容是对知名性能评测博主 Anton Putra Nginx vs Apache Performance 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准 引言 在本视频中&#xff0c;我们将比较 Nginx 与 Apache 这两个 Web 服务器。我们将进行多项测试&#xff0c;并且实际上&#xff0c;在某些情…...

(7)NodeJS的使用与NPM包管理器

本系列教程目录&#xff1a;Vue3Element Plus全套学习笔记-目录大纲 文章目录 第1章 NodeJS1.1 NodeJS简介1.2 NodeJS下载1.3 Node基础入门1.3.1 控制台输出1.3.2 使用函数 1.4 NodeJS模块化编程1.5 NodeJS内置模块1.5.1 fs模块1.5.2 http模块 1.6 NPM包管理工具1.6.1 修改npm镜…...

策略模式:思考与解读

原文地址:策略模式&#xff1a;思考与解读 更多内容请关注&#xff1a;7.深入思考与解读设计模式 引言 你是否曾遇到过这样的情况&#xff1a;在一个系统中&#xff0c;有许多算法或策略&#xff0c;每种策略的实现逻辑相似&#xff0c;但在某些情况下需要进行替换和扩展&am…...

1.Vue3 - 创建Vue3工程

目录 一、 基于vue-cli 脚手架二、基于vite 推荐2.1 介绍2.2 创建项目2.3 文件介绍2.3.1 extensions.json2.3.2 脚手架的根目录2.3.3 主要文件 src2.3.3.1 main.js2.3.3.2 App.vue 组件2.3.3.3 conponents 2.3.4 env.d.ts2.3.5 index.html 入口文件2.3.6 package2.3.7 tsconfig…...

Spring MVC 执行流程全解析:从请求到响应的七步走

Spring MVC 的工作流程&#xff0c;漏了这一个今天刚好面试提到了&#xff0c;没回答出来&#xff0c;记录一下。 &#x1f9ed; Spring MVC 整体执行流程一览&#xff08;从请求到响应&#xff09; ✅ 1. 请求发出&#xff1a;浏览器发送 HTTP 请求 如用户访问&#xff1a; …...

四元数转旋转矩阵

目录 gsplat 四元数转旋转矩阵等同代码实现 scipy 四元数转旋转矩阵替换代码 gsplat 四元数转旋转矩阵等同代码实现 import torch import torch.nn.functional as Fdef quat_act(x: torch.Tensor) -> torch.Tensor:return x / x.norm(dim-1, keepdimTrue)def normalized_q…...

Pytorch的极简transformer用于时间序列预测

本博客来源于CSDN机器鱼&#xff0c;未同意任何人转载。 更多内容&#xff0c;欢迎点击本专栏&#xff0c;查看更多内容。 目录 0.引言 1.数据准备 2. 网络搭建 3. 完整代码 4. 结语 0.引言 在【博客】中&#xff0c;我们基于tensorflow2.x深度学习框架搭建了transforme…...

垂直行业突围:工业软件在汽车、航空领域的 “破壁” 实践

在当今科技高速发展的时代&#xff0c;工业软件已悄然完成从通用工具到垂直行业 “战略武器” 的蜕变。特别是在汽车与航空这两大高端制造领域&#xff0c;工业软件的价值早已超越单纯的效率提升&#xff0c;成为关乎核心技术自主可控的关键要素&#xff0c;一场围绕工业软件的…...

人工智能在智能家居中的应用与发展

随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;智能家居逐渐成为现代生活的重要组成部分。从智能语音助手到智能家电&#xff0c;AI正在改变我们与家居环境的互动方式&#xff0c;让生活更加便捷、舒适和高效。本文将探讨人工智能在智能家居中的应用现状、…...

维度建模工具箱 提纲与总结

这里写自定义目录标题 基本概念事实表和维度表BI(Business Intelligence) 产品 事实表事实表的粒度事实表的种类 维度表建模技术基本原则避免用自然键作为维度表的主键&#xff0c;而要使用类似自增的整数键避免过度规范化避免变成形同事实表的维度表 SCD(Slowly Changed Dimen…...

Vue3 源码解析(六):响应式原理与 reactive

今天这篇文章是笔者会带着大家一起深入剖析 Vue3 的响应式原理实现&#xff0c;以及在响应式基础 API 中的 reactive 是如何实现的。对于 Vue 框架来说&#xff0c;其非侵入的响应式系统是最独特的特性之一了&#xff0c;所以不论任何一个版本的 Vue&#xff0c;在熟悉其基础用…...

规则引擎 - Easy Rules

Easy Rules 依赖demodemo1demo2 总结 Easy Rules 是一个轻量级的 Java 规则引擎&#xff0c;使用简单&#xff0c;适合快速开发和简单的规则场景&#xff0c;适合对于一些判断&#xff0c;是否属于白名单&#xff0c;是否有特殊权限&#xff0c;是否属于当前区域&#xff0c;调…...

uniapp打ios包

uniapp在windows电脑下申请证书并打包上架 前言 该开发笔记记录了在window系统下&#xff0c;在苹果开发者网站生成不同证书&#xff0c;进行uniapp打包调试和上线发布&#xff0c;对window用户友好 注&#xff1a;苹果打包涉及到两种证书&#xff1a;开发证书 和 分发证书 …...

from tensorflow.keras.models import Model中Model报红;以及动态链接库(DLL)初始化例程失败

博主也是网上搜索资料又问的kimi 试了一节课 总结下来&#xff1a; 1、用这句话导入Model from tensorflow.keras.models import Model 2、更新pip pip install --upgrade pip 3、卸载重装tensorflow pip uninstall tensorflow 4、使用阿里云使tensorflow降低到2.8.0&a…...

【初阶数据结构】树——二叉树(上)

文章目录 目录 前言 一、树 1.树的概念与结构 2.树相关术语 3.树的表示 二、二叉树 1.概念与结构 2.特殊的二叉树 3.二叉树存储结构 总结 前言 本篇带大家学习一种非线性数据结构——树&#xff0c;简单认识树和二叉数以及了解二叉树的存储结构。 一、树 1.树的概念与结构 树…...

Debian GNU/Linux的新手入门介绍

Debian GNU/Linux&#xff1a;起源、基本介绍与发行版对比 一、起源与发展历程 Debian GNU/Linux 是现存最古老的 Linux 发行版之一&#xff0c;由 Ian Murdock 于 1993 年 8 月 16 日创立。其名称结合了他的女友&#xff08;后成为妻子&#xff09;Debra 和他自己的名字 Ian…...

13 数据存储单位与 C 语言整数类型:从位到艾字节、常见整数类型及其范围、字面量后缀、精确宽度类型详解

1 数据存储单位 在计算机科学领域&#xff0c;数据存储采用分层级的单位体系&#xff0c;各层级单位以 2 的幂次方为换算基础&#xff0c;而非传统数学中的 10 的幂次方。 以下是常见的数据存储单位介绍&#xff1a; 位&#xff08;bit&#xff0c;b&#xff09;是计算机中的最…...

【CPU】结合RISC-V CPU架构回答中断系统的7个问题(个人草稿)

结合RISC-V CPU架构对中断系统七个关键问题的详细解析&#xff0c;按照由浅入深的结构进行说明&#xff1a; 一、中断请求机制&#xff08;问题①&#xff09; 硬件基础&#xff1a; RISC-V通过CLINT&#xff08;Core Local Interrupter&#xff09;和PLIC&#xff08;Platfor…...

基于unsloth微调一个越狱大模型

网上其实并没有找到现成的开源越狱数据集&#xff0c;所以数据集获取是个麻烦事。想了想easydataset&#xff0c;可能还是不行&#xff0c;easydataset是基于大模型回答的&#xff0c;大模型一般都做了对齐训练&#xff0c;那本地文档生成数据这条路也不可靠。 现成的越狱数据…...

城市客运安全员证适用岗位及要求

城市客运安全员证适用岗位及要求 城市客运安全员证是从事城市公共交通行业安全管理工作的重要资格证书&#xff0c;主要适用于以下岗位&#xff1a; 1. 公交车辆安全员 岗位职责&#xff1a;负责公交车辆运行过程中的安全监督&#xff0c;检查乘客携带物品&#xff0c;防止危…...