1:C 01 Apr 2025 01:14:57.382 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jem

时间: 2025-04-14 15:58:26 浏览: 73
<think>好的,我现在要处理用户关于Redis内存overcommit被禁用的问题以及如何启用它的查询。首先,我需要确认用户的问题到底是什么,以及他们可能需要的解决方案。 用户提到了“Memory overcommit被禁用可能导致的问题”,这应该与Linux系统的内存管理有关。我记得在Linux中,overcommit_memory参数控制着内存分配的策略。当Redis在写入操作时,如果系统不允许内存过度分配,可能会导致写入失败,比如出现“Cannot allocate memory”的错误。用户可能遇到了这种情况,想知道为什么会发生以及如何解决。 接下来,我需要回忆一下overcommit_memory的三个可能值:0、1、2。0表示启发式overcommit,系统可能会拒绝明显过大的请求;1是总是允许overcommit;2则是禁止超过一定限度的overcommit。当这个参数设置为0时,如果Redis尝试分配比物理内存加上交换空间更多的内存,系统可能会拒绝,导致错误。这时候,用户需要调整这个参数,可能设置为1来允许overcommit。 然后,我需要考虑如何启用overcommit。用户可能需要知道如何临时修改和永久修改这个参数。临时修改可以通过sysctl命令,而永久修改则需要编辑/etc/sysctl.conf文件,并添加vm.overcommit_memory = 1,然后应用配置。这部分需要详细说明步骤,避免用户操作错误。 另外,用户可能还需要知道调整overcommit后的影响。比如,启用overcommit可能会增加OOM Killer终止进程的风险,特别是当系统内存不足时。需要提醒用户注意这一点,并建议他们同时监控内存使用情况,确保有足够的交换空间,或者考虑优化Redis的内存配置,比如设置maxmemory和淘汰策略。 检查用户提供的引用内容,引用[1]和引用[3]提到了Redis服务的重启和配置,可能与启动时的内存配置有关。比如引用[3]中的docker启动命令里启用了appendonly,这可能影响内存使用,但需要结合overcommit的设置来确保持久化操作不会因内存不足而失败。 最后,生成相关问题需要考虑用户可能进一步的问题,比如如何监控Redis内存使用、OOM Killer的工作原理、Redis的内存优化策略,以及overcommit的其他配置影响。确保这些问题与主题相关,帮助用户深入理解。 现在需要组织回答结构,确保先解释问题原因,再给出解决步骤,最后注意事项和相关问题。使用正确的LaTeX格式,比如参数名用$符号包裹,如vm.overcommit_memory。同时引用提供的参考资料,比如在解释持久化操作时引用引用[2]提到的replactionfeedslave函数,说明数据同步可能受内存分配影响。 需要验证步骤的正确性,比如sysctl命令是否需要root权限,以及修改sysctl.conf后的sysctl -p命令是否必要。确保用户能够按照步骤操作,避免遗漏关键步骤。 总结思考过程:确认问题根源,解释参数含义,提供解决方法,注意事项,相关扩展问题。确保引用正确,格式符合要求,语言简洁明了。</think>### Redis内存过度分配(Memory Overcommit)问题解析 #### 一、问题原因 在Linux系统中,当$vm.overcommit_memory$参数被禁用(默认值=0)时,系统会采用启发式策略判断内存分配请求是否合理。若Redis尝试申请超过**物理内存+交换空间(SWAP)**总量的内存时,内核会拒绝分配并抛出`Cannot allocate memory`错误[^1]。这种情况常见于以下场景: 1. Redis持久化操作(如生成RDB快照)需要fork子进程,触发写时复制(Copy-On-Write)机制 2. 数据集体积接近或超过可用内存时进行批量写入 3. 从节点同步数据过程中需要内存缓冲[^2] #### 二、解决方案 ##### 1. 临时启用overcommit(重启失效) ```bash sudo sysctl vm.overcommit_memory=1 ``` ##### 2. 永久启用overcommit ```bash # 修改系统配置文件 echo "vm.overcommit_memory=1" >> /etc/sysctl.conf # 立即生效 sudo sysctl -p ``` ##### 3. 验证配置 ```bash cat /proc/sys/vm/overcommit_memory # 返回1表示生效 ``` #### 三、参数说明 | 参数值 | 模式 | 行为特征 | |-------|-----|---------| | 0 | 启发式 | 拒绝明显异常的大内存请求(默认) | | 1 | 总是允许 | 所有内存申请均通过,可能导致OOM Killer激活 | | 2 | 严格限制 | 分配量不超过`swap + RAM*overcommit_ratio` | #### 四、注意事项 1. **OOM Killer风险**:启用overcommit后,系统可能在内存耗尽时随机终止进程,可通过`vm.overcommit_ratio`调整计算阈值 2. **交换空间建议**:确保有足够的SWAP空间(推荐为RAM的1.5-2倍) 3. **Redis配置优化**: ```conf maxmemory 16gb # 设置内存上限 maxmemory-policy volatile-lru # 设置淘汰策略 ``` 4. 容器部署时需要同步修改宿主机参数[^3] #### 五、典型错误日志 ``` Background save error: Cannot allocate memory Fork failure: Resource temporarily unavailable ```
阅读全文

相关推荐

#!/bin/bash echo "192.168.1.11 k8s-master01" >>/etc/hosts echo "192.168.1.12 k8s-node01" >>/etc/hosts echo "192.168.1.13 k8s-node02" >>/etc/hosts yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF yum install wget jq psmisc vim net-tools telnet yum-utils device-mapper-persistent-data lvm2 git -y systemctl disable --now firewalld setenforce 0 sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config swapoff -a && sysctl -w vm.swappiness=0 sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab yum -y install chrony systemctl enable --now chronyd chronyc tracking chronyc -a makestep ulimit -SHn 65535 echo "* soft nofile 65536" >> /etc/security/limits.conf echo "* hard nofile 131072" >> /etc/security/limits.conf echo "* soft nproc 65535" >> /etc/security/limits.conf echo "* hard nproc 655350" >> /etc/security/limits.conf echo "* soft memlock unlimited" >> /etc/security/limits.conf echo "* hard memlock unlimited" >> /etc/security/limits.conf yum install ipvsadm ipset sysstat conntrack libseccomp -y modprobe -- ip_vs && modprobe -- ip_vs_rr && modprobe -- ip_vs_wrr && modprobe -- ip_vs_sh && modprobe -- nf_conntrack cat <<EOF > /etc/modules-load.d/ipvs.conf ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_fo ip_vs_nq ip_vs_sed ip_vs_ftp ip_vs_sh nf_conntrack ip_tables ip_set xt_set ipt_set ipt_rpfilter ipt_REJECT EOF systemctl enable --now systemd-modules-load.service cat <<EOF > /etc/sysctl.d/k8s.conf net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 fs.may_detach_mounts = 1 net.ipv4.conf.all.route_localnet = 1 vm.overcommit_memory=1 vm.panic_on_oom=0 fs.inotify.max_user_watches=89100 fs.file-max=52706963 fs.nr_open=52706963 net.netfilter.nf_conntrack_max=2310720 net.ipv4.tcp_keepalive_time = 600 net.ipv4.tcp_keepalive_probes = 3 net.ipv4.tcp_keepalive_intvl =15 net.ipv4.tcp_max_tw_buckets = 36000 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_max_orphans = 327680 net.ipv4.tcp_orphan_retries = 3 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 16384 net.core.somaxconn = 16384 EOF sysctl --system yum install docker-ce-20.10.* docker-ce-cli-20.10.* -y cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf overlay br_netfilter EOF modprobe -- overlay modprobe -- br_netfilter cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOF sysctl --system mkdir -p /etc/containerd containerd config default | tee /etc/containerd/config.toml cat > /etc/crictl.yaml <<EOF runtime-endpoint: unix:///run/containerd/containerd.sock image-endpoint: unix:///run/containerd/containerd.sock timeout: 10 debug: false EOF 这个脚本有语法错误吗

最新推荐

recommend-type

宾馆CAD源文件-长30.4米 宽16.3米 6层单位院内宾馆建筑设计【各层及屋顶平面 3立面 总平 门窗表】.zip

宾馆CAD源文件-长30.4米 宽16.3米 6层单位院内宾馆建筑设计【各层及屋顶平面 3立面 总平 门窗表】.zip
recommend-type

远程控制Ghost系统备份与还原解决方案

标题《远程操作ghost系统备份软件》和描述“远程操作ghost系统备份软件,做ghost还原与备份不用到机房,远程就搞定”揭示了该软件的主要功能和应用场景。ghost系统备份软件是一种广泛使用的磁盘映像工具,它可以创建计算机硬盘驱动器或分区的完整映像文件,以备不时之需。此软件的远程操作功能极大地提升了效率,尤其是对于管理员来说,在不接触物理机器的情况下即可完成系统备份与恢复任务。 关键词“ghost 系统备份 ghost还原 远程ghost”指出了该软件的核心功能,即使用Ghost工具进行系统映像的创建和恢复,并且可以远程执行这些操作。Ghost(General Hardware-Oriented Software Transfer)由Binary Research开发,后被赛门铁克(Symantec)公司收购,是一个功能强大的磁盘克隆与备份工具,广泛用于计算机系统备份和恢复。 从文件名称“WGho_2.0.1.23_XiaZaiBa.exe”可以看出,这是一款具体版本的ghost系统备份软件的安装包。文件名中的“WGho”可能是软件名的简写,“2.0.1.23”表示软件的版本号,“XiaZaiBa”可能是软件的中文名或者简写,“exe”是Windows操作系统中可执行文件的扩展名。 接下来,我将详细解释涉及的知识点: 1. Ghost系统备份软件 Ghost是硬盘复制和数据迁移的流行工具,可以用来制作整个硬盘或单个分区的镜像文件,这些镜像文件可以用于系统还原或在其他计算机上进行部署。Ghost备份的是磁盘的某个时刻的状态,这个状态可以是操作系统、配置文件、程序和用户数据。它会将这些数据以二进制形式精确复制,保证数据恢复时的完整性。 2. 系统备份与恢复 系统备份是指把系统当前的状态保存下来,通常包括操作系统、应用程序、配置设置和用户数据。当系统出现问题,如系统崩溃、软件冲突、病毒攻击等,可以通过恢复之前制作的备份来快速还原系统到一个稳定的工作状态,这能显著减少系统恢复时间,并降低数据丢失的风险。 3. 远程操作 远程操作通常指的是通过网络从一个位置控制另一台计算机。这项技术允许用户远程登录并控制远程计算机的桌面环境,就像坐在那台计算机前一样。远程操作技术在技术支持、系统管理、远程教育等领域应用广泛。在本例中,远程操作Ghost系统备份软件意味着管理员可以在异地控制服务器或其他电脑,执行ghost备份和还原任务,无需物理接触机器。 4. Ghost软件的远程功能 具备远程功能的ghost软件能够实现网络环境下的系统备份与还原。这通常需要在被操作的计算机上安装相应的服务端组件,使得用户能够从远程位置连接并执行ghost命令。管理员可以利用这项功能对远程服务器或工作站进行维护,不必亲自前往机房,从而节约时间、人力成本,并提高工作效率。 5. 使用注意事项 尽管远程操作Ghost软件可以极大提高效率,但在使用时还需注意以下几点: - 确保网络连接稳定,因为备份和还原过程中数据传输量可能非常大,网络不稳定可能导致操作失败。 - 对于敏感数据的备份,需要考虑数据安全性问题,确保备份数据传输和存储过程中的加密和安全性。 - 在执行还原操作之前,确保被还原系统中的重要数据已经备份或已经不再需要,因为还原操作会覆盖掉原有数据。 - 使用远程操作功能时要保证有合法的权限和授权,未经授权擅自操作可能会违反法律法规。 通过以上的详细说明,可以看出远程操作ghost系统备份软件是IT管理人员和系统管理员非常实用的工具,其远程功能为现代数据管理和灾难恢复提供了极大的便利,但同时也需要注意一些潜在的风险和安全问题。
recommend-type

【Zyplayer性能优化】:提升配置源加载速度的3大方法

# 1. Zyplayer性能优化概述 随着信息技术的快速发展,软件性能优化成为IT行业中的一个重要课题。Zyplayer作为一款广泛使用的播放器软件,在性能优化方面尤为关键。本章节将概述Zyplayer性能优化的重要性和基本方法,为读者提供一个全面的介绍和理解。 ## 1.1 性能优化的必要性 在快节
recommend-type

电机控制器MCU AUTOSAR架构

<think>好的,我现在需要帮用户解答关于电机控制器(MCU)的AUTOSAR架构的问题。首先,我需要确认自己对AUTOSAR架构的理解是否正确。AUTOSAR是汽车开放系统架构,旨在提供标准化的软件架构,以便不同厂商的软件组件可以兼容和复用。这对于汽车电子系统,尤其是像电机控制器这样的关键部件非常重要。 接下来,我需要了解电机控制器MCU在汽车中的作用。MCU通常负责控制电机的运行,比如在电动汽车中控制驱动电机的转速、扭矩等。因此,它的可靠性和实时性要求很高。结合AUTOSAR架构,应该涉及软件的分层、模块化设计,以及如何满足实时性和安全性的需求。 用户可能想知道AUTOSAR在MCU
recommend-type

简洁实用的js星级评分系统实现

根据给定的文件信息,我们可以提炼出以下知识点: ### 知识点一:JavaScript星级评分系统 星级评分系统是一种常见的用户交互组件,它允许用户通过选择一定数量的星星来表示对某个项目或服务的满意度。在Web开发中,实现这样的系统通常会用到JavaScript语言。 1. **基本原理**: - 用户点击星星后,系统会根据点击的位置给出相应的评分值。 - 星级评分系统通常涉及到前端的事件处理和DOM操作。 - 为了提供更好的用户体验,星级评分系统可能会使用动态的图像(如半星显示)来展示评分结果。 2. **实现方式**: - **HTML结构**:需要有一个或多个星星的图像,以及用于存储评分结果的隐藏输入框。 - **JavaScript逻辑**:负责捕捉用户的点击事件,并处理图像的动态改变和评分结果的存储。 3. **代码示例**: 基于描述中提到的“代码少”,我们可以假设`ratingsys.js`文件包含了实现星级评分的核心JavaScript代码。代码示例可能会涉及到以下几点: - 获取星星的元素和用户输入的元素。 - 为星星元素添加点击事件监听器。 - 在点击事件中,根据当前点击的星星调整其他星星的显示状态(全星、半星、空星)。 - 将最终的评分结果更新到隐藏的输入框中供后端处理。 ### 知识点二:JavaScript和HTML文件结构 在该文件信息中,提到了两个HTML文件和JavaScript文件。 1. **HTML文件**: - `rating.html`可能是包含星级评分系统的页面,它会使用`ratingsys.js`来实现互动功能。 - `rating.html`应该包含用于显示星级的HTML元素,如`<img>`标签,以及一个隐藏的输入元素来存储评分结果。 2. **JavaScript文件**: - `ratingsys.js`包含了实现星级评分功能的JavaScript代码。 - 根据文件结构列表,还可能包括有`1.gif`和`2.gif`这两个图像文件,这些可能是星星的不同状态图像,如满星、半星和空星状态。 ### 知识点三:JavaScript与CSS的配合使用 1. **动态类添加**:为了改变星星的视觉效果,JavaScript代码需要与CSS结合,动态地给星星添加或移除CSS类来表示不同的评分状态。 2. **动画效果**:为了使评分效果更自然,可以在CSS中设置相应的动画效果,比如使用`transition`属性来平滑地切换星星图像。 3. **响应式设计**:星级评分系统应该能够适应不同大小的屏幕,因此在CSS中可能还需要使用媒体查询来确保系统在移动设备和平板电脑上也能正确显示。 ### 知识点四:轻量化和性能优化 1. **代码量少**:描述中提到“代码少”表明`ratingsys.js`可能被精心设计以保持代码简洁,提高加载速度和执行效率。 2. **性能优化**:为了确保星级评分系统响应迅速,开发者可能会考虑一些性能优化措施,比如减少DOM操作的次数、缓存DOM元素引用、避免在事件处理函数中执行复杂的计算等。 ### 知识点五:可复用性 1. **通用性设计**:设计良好的星级评分系统应该考虑到通用性和可复用性,使其可以轻松地嵌入到不同的网站和项目中。 2. **模块化**:代码结构应该是模块化的,这样可以通过引入不同的JS文件来快速配置和使用评分系统。 通过以上的知识点说明,我们可以对给定文件中的星级评分系统有一个比较全面的认识。在实际开发中,开发者可以基于这些知识点,结合具体的项目需求和设计要求,来设计和实现一个高效且用户友好的星级评分系统。
recommend-type

【Stata数据诊断专家】:识别共线性及其对模型影响的黄金法则

# 1. 共线性基础与识别方法 ## 1.1 共线性的定义与成因 ### 概念解析:解释共线性 共线性是指在统计回归模型中,两个或多个自变量之间存在精确的相关关系,或者高度相关的情况。这会使得自变量之间的边界变得模糊,导致模型参数估计不稳定,难以解释。 ### 形成共线性的常见原因 共线性可能由于数据收集或设计的缺陷引起,比如将高度相关的变量作为预测因子,或者样本中的观测值过少相对于变量数量。此外,如果
recommend-type

学习机器学习的入门要求

<think>嗯,用户想了解学习机器学习的入门要求。我需要先理清楚这个问题的各个方面,然后组织一个结构化的回答。首先,用户可能是刚开始接触这个领域,所以应该从基础讲起,不要用太多专业术语,但也要确保涵盖必要的内容。 首先,数学基础应该是最重要的部分。机器学习涉及很多数学概念,比如线性代数、微积分、概率统计。需要解释每个数学领域在机器学习中的具体应用,比如矩阵运算在数据处理中的作用,梯度下降中的导数,概率在模型评估中的重要性。不过用户可能没有很强的数学背景,所以得强调基础的重要性,同时也要提到可以通过实践来辅助学习,避免吓退他们。 接下来是编程能力。Python应该是主要的工具,还有相关的库
recommend-type

WinXP环境下USB转串口驱动安装指南

在当今的信息化时代,USB接口因其便捷性和通用性成为了计算机与各类外设连接的主流接口。USB-to-serial(通常称为USB转串口)适配器是一种将USB接口转换为RS-232串行端口的设备,主要用于与传统串行设备(如工业控制器、路由器、旧式调制解调器等)进行通信。随着Windows XP操作系统因安全问题逐渐被淘汰,对于该系统的驱动支持也越来越稀缺,因此找到一个合适的USB-to-serial驱动对于维护老旧设备的兼容性来说非常重要。 USB-to-serial winXP驱动,即为Windows XP操作系统环境提供的USB转串口设备的驱动程序。这些驱动程序能够确保USB-to-serial适配器能够在Windows XP系统上正常工作,从而实现与传统设备的通信。驱动程序的安装通常包括自动安装和手动安装两种方式,自动安装较为简单,用户只需插入设备并运行驱动安装程序,系统即可自动识别硬件并完成安装。手动安装则可能需要用户从设备管理器中手动添加硬件,指向安装文件的位置来完成驱动的安装。 标题中提到的“USB-to-232”指的是USB接口到RS-232串行端口的转换技术。RS-232是一种广泛应用于电子通信的串行通信协议,它的标准早在1960年代就已制定,且长期作为计算机和各种外围设备通信的标准接口。USB-to-232适配器的出现,为老旧设备提供了与现代计算机连接的可能性,使得这些设备能够继续发挥余热而不是被废弃。 从文件描述来看,压缩包中的“PL-2303 Driver Installer.exe”是一个具体的USB-to-serial适配器驱动安装程序。PL-2303是Prolific Technology公司生产的一个普遍使用的USB-to-serial桥接芯片。该驱动程序是专门用于安装和配置PL-2303芯片驱动,以确保它能够与Windows XP操作系统兼容。在驱动安装过程中,可能会遇到需要安装附加组件或软件包的情况,这通常是为了确保驱动程序的稳定性和兼容性。驱动程序的安装和配置过程中也可能会需要管理员权限,以确保安装过程顺利进行。 对于IT专业人员而言,了解如何安装和配置USB-to-serial驱动程序是基础技能之一。当面对老旧设备时,能够迅速找到并安装正确的驱动程序,确保设备能够与计算机系统正常连接,对于保持业务连续性和减少成本损失至关重要。随着硬件设备的更新换代,驱动程序的支持也会逐渐减少,所以对于仍在使用的旧设备,了解如何处理驱动安装和兼容性问题就显得尤为重要。 在IT支持中,硬件驱动问题处理时,技术人员需要确保: 1. 驱动程序的来源可靠,避免下载不正规的驱动程序,防止潜在的病毒或恶意软件入侵。 2. 根据操作系统版本选择对应的驱动程序,不同版本的操作系统可能需要不同的驱动程序。 3. 遵循硬件制造商提供的安装指南,确保安装过程正确无误。 4. 在安装前进行硬件兼容性检查,以确保硬件与操作系统的兼容性。 5. 在必要时,调整系统设置或更新BIOS,以确保新驱动能够正确运行。 在实际操作中,如果驱动安装不成功,可能需要检查以下几个方面: 1. 设备是否正确连接,USB端口是否工作正常。 2. 检查设备管理器中是否有未知设备或带有问号标记的设备。 3. 尝试在设备管理器中更新驱动程序,或使用制造商提供的驱动程序查找工具。 4. 确认是否有必要的系统补丁或更新未安装。 5. 确认系统权限是否足够,有时候需要管理员权限进行驱动安装。 6. 如设备为即插即用(PnP),确认关闭了系统自带的PnP设备自动安装功能。 总而言之,USB-to-serial winXP驱动的管理和维护对于保障老旧串行设备的长期使用至关重要。随着硬件与软件环境的不断变迁,能够掌握这些基础知识并灵活应用,可以显著提升工作效率并降低潜在的风险。
recommend-type

Stata Collin命令高级技巧:输出解读与结果深度分析

# 1. Stata Collin命令概述 Stata作为一款广泛应用于统计分析的软件,提供了丰富的命令工具来处理和分析数据。Collin命令是Stata中一个非常实用的命令,它用于检测和诊断数据中的多重共线性问题。多重共线性是指在回归分析中,自变量之间存在高度相关性的情况,这可能导致模型参数估计不稳定,标准误差增大,从而影响分析结果的可靠性。 在本章中,我们将初步介绍Collin命令的基本信息,包括它的功能、使用场景和重要性。我
recommend-type

无法将“irm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

<think>嗯,用户这次询问的是关于PowerShell中"irm"命令不被识别的错误解决方案。让我仔细思考一下这个问题的本质,以及如何给用户提供最有效的帮助。首先注意到用户提到的引用信息其实不是特别相关,但错误信息"Theterm'xx'isnotrecognized"与当前情况很相似。用户明确表示遇到了"irmcmdletnotrecognized"的问题。irm是Invoke-RestMethod命令的别名,应该是PowerShell自带的命令才对。为什么会出现这种情况呢?我需要考虑几个常见原因:用户可能在使用WindowsPowerShell5.1或其他旧版本,而irm是在Power