华为云用户手册

  • 约束与限制 每个账号最多可以添加500个合规规则。 添加、修改组织合规规则和触发规则评估需要开启资源记录器,资源记录器处于关闭状态时,组织合规规则仅支持查看和删除操作。 非组织成员账号无法在Config控制台的“资源合规”页面中看到“组织规则”页签。 组织合规规则仅会下发至账号状态为“正常”的组织成员账号中。 仅被资源记录器收集的资源可参与资源评估,为保证资源合规规则的评估结果符合预期,强烈建议您保持资源记录器的开启状态,不同场景的说明如下: 如您未开启资源记录器,则资源合规规则无法评估任何资源数据。历史的合规规则评估结果依然存在。 如您已开启资源记录器,但仅在资源记录器监控范围内勾选部分资源,则资源合规规则仅会评估所选择的资源数据。 关于如何开启并配置资源记录器请参见:配置资源记录器。
  • 添加自定义组织合规规则 登录管理控制台。 单击页面左上角的图标,在弹出的服务列表中,选择“管理与监管”下的“配置审计 Config”,进入“资源清单”页面。 单击左侧的“资源合规”,进入“资源合规”页面。 选择“组织规则”页签,单击“添加规则”,进入“基础配置”页面。 “策略类型”选择“自定义策略”,配置相关参数后单击“下一步”。 图4 基础配置 表1 基础配置参数说明 参数 说明 策略类型 策略类型选择“自定义策略”。 允许用户通过自定义策略来创建合规规则。 规则名称 合规规则的名称,不能与已存在的合规规则名称重复。 合规规则名称仅支持数字、字母、下划线和中划线。 规则简介 合规规则的简介,目前对合规规则简介的内容不做限制。 FunctionGraph函数 用户自定义策略执行函数的URN。 创建FunctionGraph函数请参见创建FunctionGraph函数。 进入“规则参数”页面,规则参数配置完成后,单击“下一步”。 图5 规则参数 表2 合规规则参数说明 参数 说明 触发类型 用于触发资源合规规则。 触发类型有: 配置变更:在指定的云资源发生更改时触发规则评估。 周期执行:按照您设定的频率运行。 过滤器类型 用于指定资源类型参与规则评估。 过滤器类型分为: 指定资源:指定资源类型下的所有资源均参与规则评估。 所有资源:账号下的所有资源均参与规则评估。 仅当“触发类型”选择“配置变更”时需配置此参数。 指定资源范围 过滤器类型选择“指定资源”后,需选择指定资源范围。 服务:选择资源所属的服务; 资源类型:选择对应服务下的资源类型; 区域:选择资源所在的区域。 仅当“触发类型”选择“配置变更”时需配置此参数。 过滤范围 使用过滤范围可指定资源类型下的某个具体资源参与规则评估。 过滤范围开启后您可通过资源ID或标签指定过滤范围。 仅当“触发类型”选择“配置变更”时需配置此参数。 周期频率 设置合规规则周期执行的频率。 仅当“触发类型”选择“周期执行”时需配置此参数。 规则参数 自定义策略的规则参数最多可以设置10个,由您自行配置。 目标 目标决定了此组织合规规则配置的部署位置。 组织:将策略部署到您组织内的所有成员账号中。 当前账号:将策略部署到当前登录的账号中。 创建组织类型的资源合规规则时请选择“组织”。 排除账号 输入需要排除的组织内的部分账号ID,使得该组织合规规则不在排除的账号中部署。 仅当“目标”选择“组织”时可配置此参数。 进入“确认规则”页面,确认规则信息无误后,单击“提交”按钮,完成自定义组织合规规则的创建。
  • 约束与限制 每个账号最多可以添加500个合规规则(包括由组织合规规则和合规规则包创建的托管规则)。 添加、修改、启用合规规则和触发规则评估需要开启资源记录器,资源记录器处于关闭状态时,合规规则仅支持查看、停用和删除操作。 托管合规规则不支持进行修改、停用、启用、删除操作,托管合规规则是由组织合规规则或合规规则包创建的,由组织合规规则创建的托管规则只能由创建规则的组织账号进行修改和删除操作,由合规规则包创建的托管规则可以通过更新合规规则包进行参数修改,且只能通过删除相应合规规则包来进行删除。具体请参见组织合规规则和合规规则包。 添加、修改组织合规规则和触发规则评估需要开启资源记录器,资源记录器处于关闭状态时,组织合规规则仅支持查看和删除操作。 非组织成员账号无法在Config控制台的“资源合规”页面中看到“组织规则”页签。 组织合规规则仅会下发至账号状态为“正常”的组织成员账号中。 当前仅用户自行创建的预定义或自定义合规规则支持修正配置,通过组织合规规则或合规规则包创建的托管合规规则不支持修正配置。 基于 RFS 服务私有模板执行修正的场景下,Config当前仅默认支持使用北京四(cn-north-4)区域的私有模板创建资源栈,且对应区域的资源栈应至少预留5个配额,否则执行修正可能会因配额不足导致失败。 一个合规规则上只能创建一个修正配置。 当合规规则存在修正配置,则必须删除修正配置并且停用规则后,才可删除此合规规则。 单个合规规则的修正配置最多支持用户手动添加100个修正例外资源,基于设置的修正重试规则被自动添加至修正例外的资源没有配额限制。 仅被资源记录器收集的资源可参与资源评估,为保证资源合规规则的评估结果符合预期,强烈建议您保持资源记录器的开启状态,不同场景的说明如下: 如您未开启资源记录器,则资源合规规则无法评估任何资源数据。历史的合规规则评估结果依然存在。 如您已开启资源记录器,但仅在资源记录器监控范围内勾选部分资源,则资源合规规则仅会评估所选择的资源数据。 关于如何开启并配置资源记录器请参见:配置资源记录器。
  • 概述 资源合规特性帮助您快速创建一组合规规则,用于评估您的资源是否满足合规要求。您可以选择Config提供的系统内置预设策略或自定义策略,并指定需要评估的资源范围来创建一个合规规则;合规规则创建后,有多种机制触发规则评估,然后查看合规规则的评估结果来了解资源的合规情况。 在使用资源合规时,如果您是组织管理员或Config服务的委托管理员,您还可以添加组织类型的资源合规规则,直接作用于您组织内账号状态为“正常”的所有成员账号中。 针对合规规则评估出的不合规资源,合规修正功能可以帮助您设置基于合规规则的修正配置,通过关联RFS服务的私有模板或FunctionGraph服务的函数实例,按照您自定义的修正逻辑对不合规资源进行快速修正,确保您的云上资源持续合规。
  • 规则详情 表1 规则详情 参数 说明 规则名称 gaussdb-mysql-instance-multiple-az-check 规则展示名 GaussDB (for MySQL)实例跨AZ部署检查 规则描述 GaussDB(for MySQL)实例未跨AZ部署,视为“不合规”。 标签 gaussdbformysql 规则触发方式 配置变更 规则评估的资源类型 gaussdbformysql.instance 规则参数 无
  • 指定不合规资源执行修正 登录管理控制台。 单击页面左上角的图标,在弹出的服务列表中,选择“管理与监管”下的“配置审计 Config”,进入“资源清单”页面。 单击左侧的“资源合规”,进入“资源合规”页面。 在“规则”页签下的合规规则列表中,单击已创建修正配置的合规规则的规则名称,进入规则详情页。 在“资源范围”列表中,您可以选择一个或者多个不合规资源,然后单击列表上方的“执行修正”。 在弹出的确认框中,单击“确定”,基于所选不合规资源的修正执行下方成功。 图3 执行修正 在“资源范围”列表中可查看所选不合规资源的修正信息。 您可以单击列表右上方的刷新按钮刷新不合规资源的修正状态。 图4 查看修正结果
  • 操作场景 当合规规则的修正方法选择“手动修正”时,则您必须手动对不合规资源执行修正。 当合规规则的修正方法选择“自动修正”时,您后续也可以根据需要随时手动对不合规资源执行修正。 不合规资源的修正状态分为: 排队中:表示此不合规资源的修正操作正在排队中。 修正中:表示此不合规资源正在执行修正中。 修正成功:表示此不合规资源修正成功。 修正失败:表示此不合规资源修正失败,您可以在界面中查看修正失败的原因。
  • 其他操作 您可以修改预设查询或已有自定义查询的名称、描述和查询语句,“另存为”后产生新的查询,具体请参考其他操作。 如果您需要查看某个查询的名称、描述和查询语句,请参考查看查询。 如果您需要修改某个自定义查询的查询语句,请参考修改查询。 如果您不需要使用某个自定义的查询,删除操作请参考删除查询。预设查询不支持删除操作。 使用资源聚合器高级查询的相关功能,必须先指定需要查询的资源聚合器,从而定义您的查询范围,对指定聚合器聚合的多个源账号下的资源进行高级查询。
  • 新建查询 登录管理控制台。 单击页面左上角的图标,在弹出的服务列表中,选择“管理与监管”下的“配置审计 Config”,进入“资源清单”页面。 单击页面左侧的“资源聚合器”,在下拉列表中选择“高级查询”,进入“高级查询”页面。 选择“自定义查询”页签,单击页面右上角的“新建查询”。 在右侧的“查询范围”处选择需要查询资源配置的聚合器,然后在下方输入框中输入查询语句。 页面左侧为高级查询使用的Schema信息,也就是查询语句中properties参数需要填写的内容,为各个云服务资源类型的详细属性。查询语句的配置样例请参见高级查询配置样例。 单击“保存查询”,输入查询名称和描述。 查询名称仅支持输入数字、英文字母、下划线和中划线,最大长度64个字符。 单击“确定”,保存成功。 图1 保存查询 如果自定义查询达到限额时,您将无法单击“保存查询”,同时页面右上方提示“您创建的查询已达到上限,请删除暂不需要使用的查询”。但此时您依然可以单击“运行”,直接运行查询并查看和导出查询结果。 单击“运行”,查看查询结果。目前只支持展示和导出前4000条查询结果。 单击“导出”,选择要导出的文件格式( CS V格式或JSON格式),导出查询结果。
  • 概述 资源聚合器提供高级查询能力,通过使用ResourceQL自定义查询单个或多个聚合源账号的资源配置状态。 高级查询支持用户自定义查询和浏览华为云云服务资源,用户可以通过ResourceQL在查询编辑器中编辑和查询。 您可以使用Config预设的查询语句,或根据资源配置属性自定义查询语句,查询具体的云资源配置。 ResourceQL是结构化的查询语言(SQL)SELECT语法的一部分,它可以对当前资源数据执行基于属性的查询和聚合。查询的复杂程度不同,既可以是简单的标签或资源标识符匹配,也可以是更复杂的查询,例如查看指定具体OS版本的云服务器。 高级查询仅支持用户自定义查询、浏览、导出云服务资源,如果要对资源进行修改、删除等管理类的操作,请前往资源所属的服务页面进行操作。
  • 使用限制 为避免单用户长时间查询占用资源,影响其他用户,对高级查询功能做以下限制: 单次查询语句的执行时长不能超过15秒,否则会返回超时错误。 单次查询语句查询大量数据,会返回查询数据量过大的报错,需要用户主动简化查询语句。 单次查询结果只返回前4000条。 单个查询语句中最多只能做两次表的关联查询。 每个账号最多可以创建200个高级查询。 高级查询功能依赖于资源记录器所收集的资源数据,强烈建议您保持资源记录器的开启状态,不同场景的说明如下: 如您从未开启过资源记录器,则高级查询语句无法查询到任何资源数据。 如您已开启资源记录器,但仅在资源记录器监控范围内勾选部分资源,则高级查询语句仅能查询到所选择的资源数据。 如您开启资源记录器并勾选全部资源,但后续又关闭资源记录器,则高级查询语句仅能查询到资源记录器由开启到关闭期间收集到的资源数据。 关于如何开启并配置资源记录器请参见:配置资源记录器。
  • 规则详情 表1 规则详情 参数 说明 规则名称 gaussdb-mysql-instance-enable-errorlog 规则展示名 GaussDB(for MySQL)实例开启错误日志 规则描述 未开启错误日志的GaussDB(for MySQL)实例,视为“不合规”。 标签 gaussdbformysql 规则触发方式 配置变更 规则评估的资源类型 gaussdbformysql.instance 规则参数 无
  • 步骤六:调用服务 选择本地图片或者使用Demo默认图片,参考如下示例代码修改“ModerationImageContentDemo.java”文件中图片文件路径(“data/moderation-demo-1.jpg”)。 1 2 3 4 5 public static void main(String[] args) throws IOException { ModerationImageContentDemo tool = new ModerationImageContentDemo(); tool.imageContentCheck("https://sdk-obs-source-save.obs.cn-north-4.myhuaweicloud.com/terrorism.jpg"); byte[] imageBytes = FileUtils.readFileToByteArray(new File("data/moderation-demo-1.jpg")); tool.imageContentCheck(imageBytes); } 执行“ModerationImageContentDemo.java”文件,控制台输出200即表示程序执行成功,图像 内容审核 结果输出到控制台,如图3所示。 图3 运行结果 查看调用次数。您可以在“服务列表”,“ 图像审核 ”页查看调用详情和调用次数统计。如图4所示。 图4 识别统计 识别结果统计:显示一段时间范围,内容审核的调用总数,拒绝数,疑似数和通过数,帮助您更好了解服务的调用情况和审核情况。 总数:指的是审核调用总次数。 拒绝数:指的是block总数,即文本中包含敏感信息,审核不通过的次数。 疑似数:指的是review总数,即人工复查审核的次数。 通过数:指的是pass总数,即通过审核的次数。 数据趋势:显示您设置的这段时间范围内,总数,拒绝数,疑似数和通过数的变化趋势。 图5 原因分布 拒绝数据原因分布:显示您设置的这段时间范围内,审核不通过的检测场景占比数。 疑似数据原因分布:显示您设置的这段时间范围内,需要人工复查的检测场景占比数。
  • 会话 会话策略配置如表6所示。 表6 会话策略 策略参数 策略说明 推荐值 无键鼠事件自动断开 自动断开:客户端中无键鼠操作超过设置的等待时间后,将自动断开与服务器的连接,关闭应用。 已禁用:关闭自动断开功能禁用。 自动断开 等待时间(分钟) 无键鼠事件自动断开的等待时间设置。配置范围:3~86400 15 自动注销 开启无键鼠事件自动断开功能后,可配置在断开多久后自动注销会话。 启用 会话断连保留时长(分钟) 无键鼠事件自动断开功能开启后,自动断开连接后,等待设置的会话保留时长后,自动注销会话。配置范围:1~86400。 480
  • 文件和剪切板 配置文件和剪切板策略。策略内容如表5所示。 表5 文件和剪切板策略 策略类型 策略参数 策略说明 取值样例 双向重定向 双向重定向开关 在 云桌面 内使用云应用时,默认开启 文件重定向和剪切板重定向(双向),实现云桌面和云应用之间在云上内网间互相拷贝数据。 在TC或者本地桌面使用云应用时,根据文件重定向和剪切板重定向的开关配置控制文件和剪切板的数据拷贝。 文件重定向 文件重定向开关 只读,对选择的驱动器和存储设备中的文件只可以预览。 读写,对选择的驱动器存储设备中的文件可编辑修改。 在云应用环境下实现对驱动器的支持,用户可以在云应用中通过文件重定向方式使用驱动器。 只读 固定驱动器 :选择后用户可以在云应用中通过文件重定向方式使用固定驱动器,如本地磁盘。 :未选择则用户无法在云应用中通过文件重定向方式使用固定驱动器,如本地磁盘。 说明: 文件重定向关闭时,为禁用。 可移除驱动器 :选择后用户可以在云应用中通过文件重定向方式使用可移除驱动器,如U盘。 :未选择则用户无法在云应用中通过文件重定向方式使用可移除驱动器,如U盘。 说明: 文件重定向关闭时,为禁用。 光盘驱动器 :选择后用户可以在云应用中通过文件重定向方式使用光盘驱动器。 :未选择则用户无法在云应用中通过文件重定向方式使用光盘驱动器。 网络驱动器 :选择后用户可以在云应用中通过文件重定向方式使用网络驱动器。 :未选择则用户无法在云应用中通过文件重定向方式使用网络驱动器。 文件发送(虚拟机至客户端) :启用文件发送开关。 :关闭文件发送开关。 流控开关 :启用流控开关。 :关闭流控开关。 网络优的延时阈值(ms) 网络优良时的延时阈值,取值范围1~1000。 30 网络一般的延时阈值(ms) 网络一般时的延时阈值,取值范围1~1000。 70 网络差的延时阈值(ms) 网络较差时的延时阈值,取值范围1~1000。 100 降速步伐(KB) 降低传输速度的步伐,取值范围1~100。 20 慢增速步伐(KB) 慢增加传输速度的步伐,取值范围1~100。 10 快增速步伐(KB) 快增加传输速度的步伐,取值范围1~100。 20 传输初始速度(KB/s) 初始的开始传输速度,取值范围1~10240。 1024 测速块大小(KB) 测试速度的数据块大小,取值范围64~1024。 64 测速块时间间隔(ms) 发送测试数据块的时间间隔,取值范围1000~100000。 10000 压缩开关 :启用压缩开关。 :关闭压缩开关。 压缩阈值(Byte) 取值范围0~10240。 512 最小压缩率 取值范围0~1000。 900 Linux支持设置文件大小 :启用Linux支持设置文件大小。 :关闭Linux支持设置文件大小。 Linux设置文件大小阈值(MB) 取值范围0~4096。 100 Linux根目录挂载开关 :启用Linux根目录挂载。 :关闭Linux根目录挂载。 Linux根目录挂载路径 启用Linux根目录挂载时需配置挂载路径。最长256个字符,字符串格式UTF-8。 \var\log Linux文件系统挂载路径 最长256个字符,字符串格式UTF-8。 \media|\Volumes|\swdb\mnt|\home|\storage|\tmp|\run\media Linux固定驱动器文件系统格式 最长256个字符,字符串格式UTF-8。 - Linux可移动驱动器文件系统格式 最长256个字符,字符串格式UTF-8。 vfat|ntfs|msdos|fuseblk|sdcardfs|exfat|fuse.fdredir Linux光盘驱动器文件系统格式 最长256个字符,字符串格式UTF-8。 cd9660|iso9660|udf Linux网络驱动器文件系统格式 最长256个字符,字符串格式UTF-8。 smbfs|afpfs|cifs 路径分隔符 单个ASCII字符。 | 读写速度(Kbps) 范围大小为0~2147483647之间。 0 移动客户端重定向 :启用移动客户端重定向。 :关闭移动客户端重定向。 剪切板重定向 剪切板重定向 开启双向:启用后最终用户可以在云应用客户端复制数据并在本地桌面中粘贴,同时也可以在本地桌面中复制数据后在云应用客户端中粘贴。 服务端到客户端:启用后最终用户只支持在云应用客户端中复制数据并在本地桌面中粘贴。 客户端到服务端:启用后,只支持在本地桌面中复制数据并在云应用客户端中粘贴。 纯文本长度限制 允许服务端到客户端拷贝,范围为1~4096个字符。 允许客户端到服务端拷贝,范围为1~4096个字符。 说明: 仅在客户端(TC/SC)操作系统和云应用操作系统均为Windows时,支持富文本拷贝、文件拷贝,且最多同时可拷贝500个文件。 当客户端(TC/SC、移动客户端)操作系统为其他时,只支持纯文本格式拷贝,不支持文件拷贝。 开启双向 剪切板富文本重定向 开启双向:启用后最终用户可以在云应用客户端复制富文本并在本地桌面中粘贴,同时也可以在本地桌面中复制富文本后在云应用客户端中粘贴。 服务端到客户端:启用后最终用户只支持在云应用客户端中复制富文本并在本地桌面中粘贴。 客户端到服务端:启用后,只支持在本地桌面中复制富文本并在云应用客户端中粘贴。 说明: 富文本:指包含了格式信息的文本,比如字体样式(粗体、斜体等)、颜色、超链接、图像、表格等多媒体元素。 开启双向 剪切板文件重定向 开启双向:启用后最终用户可以在云应用客户端复制文件并在本地桌面中粘贴,同时也可以在本地桌面中复制文件后在云应用客户端中粘贴。 服务端到客户端:启用后最终用户只支持在云应用客户端中复制文件并在本地桌面中粘贴。 客户端到服务端:启用后,只支持在本地桌面中复制文件并在云应用客户端中粘贴。 开启双向
  • 显示 配置显示策略,策略配置内容如表4所示。 表4 显示策略 策略类型 策略参数 策略说明 取值样例 显示 显示策略等级 等级1:适用于512Kbps以下的网络带宽,仅用于浏览文本文档等轻载办公场景,显示质量较低。 等级2:适用于1Mbps以下的网络带宽,仅用于浏览文本文档及静态图片等轻载办公场景,显示质量略优于等级1。 等级3:适用于4Mbps以下的网络带宽,可用于浏览文档、图片、动态网页等中载办公场景。 等级4(推荐):适用于20Mbps以下的网络带宽,可用于流畅播放标清/高清视频,显示质量与占用带宽达到更佳平衡。 等级5:适用20Mbps以上的网络带宽,视频播放效果最优。 等级4(推荐) 显示帧率 (fps) 非视频场景下的画面刷新率。该值越大,则画面与操作越流畅,但所需的网络带宽以及虚拟机的CPU占用率也会随之升高。取值范围1~60,推荐配置为15~25。 25 视频帧率(fps) 视频场景下的画面刷新率。该值越大,则视频播放越流畅,但所需的网络带宽以及虚拟机的CPU占用率也会随之升高。 - 带宽(Kbps) 单用户峰值带宽限制,取值范围256~25000。 20000 图像压缩参数 图像缓存最低容量(MB) 进行图像缓存时的缓存容量的大小,单位MB。值越大,带宽越低,但会消耗客户端内存。设定值小于50时,缓存功能停用。取值范围0~300。 200 有损压缩识别阈值 图像复杂度的判别阈值。该值越小,图像越倾向于无损画质,清晰度越高,但对网络带宽要求也相应升高,反之亦然,取值范围0~255。 60 无损压缩模式 选择无损图像压缩算法,“初级压缩”的压缩率较低,CPU占用也低;而“深度压缩”则相反,压缩率较高,但CPU占用也略微升高。 初级压缩 深度压缩级别 该项在选择“深度压缩”后生效。压缩级别越高,意味着压缩比越高,带宽占用越低,而CPU占用越高。0级压缩表示原图拷贝,无压缩,CPU占用最低,但带宽占用最高。 压缩级别0 有损压缩质量 该项用于设置有损压缩的图像质量。取值越大,画质越好。取值范围20~100。 85 办公场景色彩增强 该项用于办公场景色彩增强。 :启用办公场景色彩增强。 :禁用办公场景色彩增强。 视频压缩参数 质量或带宽优先 质量优先:选择质量优先,则以固定质量压缩视频画面。“视频平均码率”不生效,仅在启用“渲染加速”后生效。 带宽优先:选择带宽优先,则以恒定码率压缩视频画面。 “视频平均质量”、“视频最低质量”、“视频最高质量”不生效,仅在启用“渲染加速”后生效。 质量优先 视频平均码率(Kbps) 视频压缩算法参数。在带宽优先模式下,该值越大,视频质量越好。取值范围256~100000。 18000 视频峰值码率(Kbps) 视频压缩算法参数。该值越大,视频质量越好。取值范围256~100000。 18000 视频平均质量 视频画面的平均质量系数。在质量优先模式下,该值越大,视频质量越差。取值范围5~59。 15 视频最低质量 视频画面的质量下限。在质量优先模式下,该值越大,视频质量越差。取值范围5~69。 25 视频最高质量 视频画面的质量上限。在质量优先模式下,该值越大,视频质量越差。取值范围1~59。 7 GOP大小 视频压缩算法参数。该值越小,视频质量越好,但带宽占用越大,推荐设为视频帧率的1~2倍。取值范围0~65535。 100 编码预置 视频压缩算法参数。该值越小,编码速度越快,流畅度越好,但图像质量越差,带宽越大。 预置1 渲染加速 渲染加速 :选择后启用渲染加速模式,提高显示流畅度。 :未选择则禁用渲染加速。 视频加速增强配置 :启用视频加速增强配置。 :禁用视频加速增强配置。 视频场景优化 :启用视频场景优化,提高视频场景的显示流畅度。 :禁用视频场景优化。 GPU色彩优化 :启用GPU色彩优化,在视频/办公混合场景中提高色彩还原度。 :禁用GPU色彩优化。 说明: 该参数仅针对GPU桌面。 其他参数 显卡缓存(MB) 设备表面内存容量,取值范围0~64,影响部分场景带宽,值越大,带宽越低。 64 驱动托管模式 :启用驱动托管模式。 :禁用驱动托管模式。 驱动托管延时(*30ms) 取值范围1~100。 80 驱动托管视频延时(*30ms) 取值范围1~100。 80 计算机修改分辨率 :启用计算机修改分辨率策略后,终端用户可在云应用客户端中通过系统设置的方式修改云应用客户端显示分辨率。 :禁用计算机修改分辨率,终端用户不能通过系统设置的方式修改显示分辨率。
  • 音频 配置音频策略。策略内容如表2所示。 表2 音频策略 策略项 策略参数 策略说明 取值样例 音频重定向 音频重定向总开关 用户云应用客户端上的应用程序可以通过终端上的声音设备来录音和播音。 播音重定向 播音重定向总开关 只有在设置启用音频重定向后才生效。单独控制播音开关。 :启用播音重定向。启用后最终用户可以可正常播音。 :禁用播音重定向。最终用户播音时系统将无声。 播音场景 无损:音质最好,但是带宽占用最高。 语音通话:选择该场景能提供更佳的语音通话处理能力而且带宽占用最低,但音乐处理能力一般。 音乐播音:选择该场景能提供更佳的音乐处理效果且带宽占用适中,但语音通话处理能力一般。 自动识别:选择该场景能识别用户当前是在语音通话还是在播放音乐(正常自动识别准确率可高于90%)。系统会根据用户的行为自动切换到更佳算法。 音乐播音 录音重定向 录音重定向总开关 该策略项只有在设置启用音频重定向后才生效,单独控制录音开关。 :启用录音重定向。启用后最终用户可以正常录音。 :禁用录音重定向。最终用户录音时系统将无声。 录音场景 无损:音质最好,但是带宽占用最高。用户在网络带宽充足和网络稳定可靠的情况才建议选择该场景。录音通常不建议使用。 语音通话:此选择能提供更佳的语音通话处理能力而且带宽占用最低,但音乐处理能力一般。录音基本上都是用于录语音,建议用户选择该场景。 音乐录音:保留项。录音实践应用中很少用于音乐。录音通常不建议使用该场景。 自动识别:保留项。自动识别目前等同于选择语音通话场景。 语音通话
  • 客户端 配置客户端策略。策略内容如表3所示。 表3 客户端策略 策略参数 策略说明 取值样例 自动重连间隔(秒) 在云应用客户端异常断开连接后,每隔多长时间尝试连接一次。取值范围为1~50。 5 自动重连会话保持时长(秒) 在云应用客户端异常断开连接后,自动重连最多尝试的时间。取值范围为0~180。 180 防截屏策略 策略开启后,防止用户在云应用客户端截屏保存本地及分享。 启用防截屏策略开关。 关闭防截屏策略开关。 说明: 仅支持windows客户端、Linux瘦终端,开启后其他终端会禁止接入。
  • 存算一体与存算分离产品形态对比 表2 存算分离与存算一体差异 数仓类型 存算分离 存算一体 存储介质 数据存储在计算节点的本地磁盘。 列存数据存储在华为云对象存储,本地磁盘主要作为OBS数据的查询缓存,行存仍然存储在计算节点本地磁盘。 产品优势 数据存储在计算节点本地,性能高。 存算分离,计算、存储分层弹性,存储按需使用,计算快速伸缩,无限算力、无限容量。 数据存储在对象存储上,存储成本更低,多VW支持的并发更高。 支持数据共享,支持湖仓一体。
  • 存算一体架构 GaussDB(DWS)基于Shared-nothing分布式架构,具备MPP(Massively Parallel Processing)大规模并行处理引擎,由众多拥有独立且互不共享的CPU、内存、存储等系统资源的逻辑节点组成。在这样的系统架构中,业务数据被分散存储在多个节点上,数据分析任务被推送到数据所在位置就近执行,并行地完成大规模的数据处理工作,实现对数据处理的快速响应。 图4 产品架构 应用层 数据加载工具、ETL(Extract-Transform-Load)工具、以及商业智能BI工具、数据挖掘和分析工具,均可以通过标准接口与GaussDB(DWS)集成。GaussDB(DWS)兼容PostgreSQL生态,且SQL语法进行了兼容MySQL、Oracle和Teradata的处理。应用只需做少量改动即可向GaussDB(DWS)平滑迁移。 接口 支持应用程序通过标准JDBC和ODBC连接GaussDB(DWS)。 GaussDB(DWS) 一个GaussDB(DWS)集群由多个在相同子网中的相同规格的节点组成,共同提供服务。集群的每个DN负责存储数据,其存储介质是磁盘。协调节点(Coordinator)负责接收来自应用的访问请求,并向客户端返回执行结果。此外,协调节点还负责分解任务,并调度任务分片在各DN上并行执行。 自动数据备份 支持将集群快照自动备份到EB级 对象存储服务 OBS(Object Storage Service)中,方便利用业务空闲期对集群做周期备份以保证集群异常后的数据恢复。 快照是GaussDB(DWS)集群在某一时间点的完整备份,记录了该时刻指定集群的所有配置数据和业务数据。 工具链 提供了数据并行加载工具GDS(General Data Service)、SQL语法迁移工具DSC(Database Schema Convertor)、SQL开发工具Data Studio、迁移工具GDS-Kafka,并支持通过控制台对集群进行运维监控。
  • 存算分离架构 GaussDB(DWS)全新推出云原生存算分离集群,利用云基础设施提供的资源池化和海量存储能力,结合MPP数据库技术,采用计算存储分离架构,实现了极致弹性、实时入库、数据实时共享和湖仓一体等特性。 存算分离集群采用计算存储分离架构,解决了计算存储必须等比例缩放的问题。赋能用户面向业务峰谷时,对计算能力进行快速且独立的扩缩要求,同时保证存储无限扩展、按需付费,快速、敏捷的响应业务变化,同时具有更高的性价比,进一步助力企业降本增效。 存算分离集群具有以下优势: 湖仓一体:提供简单、易维护的湖仓一体体验,无缝对接 DLI ,支持元数据自动导入、外部表查询加速、内外表关联查询,支持 数据湖 格式读写,简化数据入湖入仓。 实时写入:提供H-Store存储引擎,对实时写入场景进行了设计优化,支持高吞吐实时写入与更新,同时支持大批量写入场景。 极致弹性:计算资源快速伸缩,存储空间按需使用,同时大幅度降低存储成本。历史数据无需再迁移到其他存储介质上,让数据分析更简单,一站式解决金融、互联网等行业快速增长的数据分析需求。 数据共享:一份数据承载多样负载,数据实时共享,多写多读的使用模式,在支持不同业务数据快速共享的同时,具备良好的计算资源隔离能力。 图5 存算分离架构 极致弹性 逻辑集群(Virtual Warehouse) 随业务需求并发扩展。 多VW间数据实时共享,一份数据承载多样负载,无需拷贝。 通过多VW实现吞吐/并发的线性提升,同时具备良好的读写分离、负载隔离能力。 湖仓一体 数据湖与 数据仓库 数据无缝混合查询。 数据湖分析体验数仓的极致性能和精准管控度。
  • 集群逻辑架构 GaussDB(DWS)集群逻辑架构如图1所示。实例的详细介绍请参见表1。 图1 集群逻辑架构图 表1 集群架构说明 名称 描述 说明 CM 集群管理模块(Cluster Manager)。管理和监控分布式系统中各个功能单元和物理资源的运行情况,确保整个系统的稳定运行。 CM由CM Agent、OM Monitor和CM Server组成。 CM Agent:负责监控所在主机上主备GTM、CN、主备DN的运行状态并将状态上报给CM Server。同时负责执行CM Server下发的仲裁指令。集群的每台主机上均有CM Agent进程。 OM Monitor:看护CM Agent的定时任务,其唯一的任务是在CM Agent停止的情况下将CM Agent重启。如果CM Agent重启不了,则整个主机不可用,需要人工干预。 说明: CM Agent重启的情况很少发生,如果出现可能是因为系统资源不够用导致无法启动新进程。 CM Server:根据CM Agent上报的实例状态判定当前状态是否正常,是否需要修复,并下发指令给CM Agent执行。 GaussDB(DWS)提供了CM Server的主备实例方案,以保证集群管理系统本身的高可用性。正常情况下,CM Agent连接主CM Server,在主CM Server发生故障的情况下,备CM Server会主动升为主CM Server,避免出现CM Server单点故障。 GTM 全局事务管理器(Global Transaction Manager),负责生成和维护全局事务ID、事务快照、时间戳等全局唯一的信息。 整个集群只有一组GTM:主、备GTM各一个。 WLM 工作负载管理器(Workload Manager)。控制系统资源的分配,防止过量业务负载对系统的冲击而导致业务拥塞和系统崩溃。 不同于集群中的实例(GTM、CM、CN、DN)模块,不需要在安装过程中指定主机名称。安装程序会自动在各主机上安装此模块。 CN 协调节点(Coordinator)。负责接收来自应用的访问请求,并向客户端返回执行结果;负责分解任务,并调度任务分片在各DN上并行执行。 集群中,CN有多个并且CN的角色是对等的(执行DML语句时连接到任何一个CN都可以得到一致的结果)。只需要在CN和应用程序之间增加一个负载均衡器,使得CN对应用是透明的。CN故障时,由负载均衡自动路由连接到另外一个CN,请参见集群绑定和解绑ELB。 当前分布式事务框架下无法避免CN之间的互连,为了减少GTM上线程过多导致负载过大,建议CN配置数目≤10个。 GaussDB(DWS)通过CCN(Central Coordinator )负责集群内的资源全局负载控制,以实现自适应的动态负载管理。CM在第一次集群启动时,通过集群部署形式,选择编号最小的CN作为CCN。若CCN故障之后,由CM选择新的CCN进行替换。 DN 数据节点(Datanode)。负责存储业务数据(支持行存、列存、混合存储)、执行数据查询任务以及向CN返回执行结果。 在集群中,DN有多个。每个DN存储了一部分数据。GaussDB(DWS)对DN提供了高可用方案:主DN、备DN、从备DN。三者的工作原理如下: 主、备DN同步数据期间,如果主DN突然故障不可用,备DN会升为主DN。 在原主DN恢复前,新升为主的DN会将数据日志同步到从备DN。 原主DN恢复后将成为备DN,并且会使用“从备DN”上的数据日志恢复异常期间的数据。 也就是说从备DN永远只作为从备使用,不会因为主DN或备DN故障而升级为主DN或备DN,从备DN只存放原主DN故障时,新升为主的DN同步到从备DN的Xlog数据和数据通道复制产生的数据。因此从备DN不额外占用存储资源,相比传统三副本节约了三分之一的存储空间。 Storage 服务器的本地存储资源,持久化存储数据。 - 集群的每个DN上负责存储数据,其存储介质也是磁盘。图2从逻辑上介绍了每个DN上都有哪些对象,以及这些对象之间的关系,其中: Database,即数据库,用于管理各类数据对象,各数据库间相互隔离。 Datafile Segment,即数据文件,通常每张表只对应一个数据文件。如果某张表的数据大于1GB,则会分为多个数据文件存储。 Table,即表,每张表只能属于一个数据库。 Block,即数据块,是数据库管理的基本单位,默认大小为8KB。 数据有三种分布方式,可以在建表的时候指定:REPLICATION、ROUNDROBIN 、HASH。 图2 数据库逻辑结构图
  • Step2 查看精度测试结果 默认情况下,评测结果会按照result/{model_name}/的目录结果保存到对应的测试工程。执行多少次,则会在{model_name}下生成多少次结果。benchmark_eval下生成的log中记录了客户端产生结果。数据集的打分结果在result/{model_name}/...目录下,查找到summmary目录,有txt和csv两种保存格式。总体打分结果参考txt和csv文件的最后一行,举例如下: npu: mmlu:46.6 gpu: mmlu:47 NPU打分结果(mmlu取值46.6)和GPU打分结果(mmlu取值47)进行对比,误差在1%以内(计算公式:(47-46.6)/47*100=0.85%)认为NPU精度和GPU对齐。
  • Step1 配置精度测试环境 获取精度测试代码。精度测试代码存放在代码包AscendCloud-LLM的llm_tools/llm_evaluation目录中,代码目录结构如下。目前使用的opencompass版本是0.2.6。 benchmark_eval ├──opencompass.sh #运行opencompass脚本 ├──install.sh #安装opencompass脚本 ├──vllm_api.py #启动vllm api服务器 ├──vllm.py #构造vllm评测配置脚本名字 ├──vllm_ppl.py #ppl精度测试脚本 执行如下命令进入容器。 kubectl exec -it {pod_name} bash ${pod_name}:pod名,例如图1${pod_name}为yourapp-87d9b5b46-c46bk。 精度评测切换conda环境,确保之前启动服务为vllm接口,进入到benchmark_eval目录下,执行如下命令。 conda activate python-3.9.10 bash install.sh 在/home/ma-user/AscendCloud/AscendCloud-LLM/llm_tools/llm_evaluation/benchmark_eval目录下安装依赖。 cd opencompass #在benchmark_eval目录下 pip install -e . #下载对应依赖 cd ../human-eval #在benchmark_eval目录下 (可选,如果选择使用humaneval数据集) pip install -e . # 可选,如果选择使用humaneval数据集 (可选)如果需要在humaneval数据集上评估模型代码能力,请执行此步骤,否则忽略这一步。原因是通过opencompass使用humaneval数据集时,需要执行模型生成的代码。请仔细阅读human_eval/execution.py文件第48-57行的注释,内容参考如下。了解执行模型生成代码可能存在的风险,如果接受这些风险,请取消第58行的注释,执行下面步骤进行评测。 # WARNING # This program exists to execute untrusted model-generated code. Although # it is highly unlikely that model-generated code will do something overtly # malicious in response to this test suite, model-generated code may act # destructively due to a lack of model capability or alignment. # Users are strongly encouraged to sandbox this evaluation suite so that it # does not perform destructive actions on their host or network. For more # information on how OpenAI sandboxes its code, see the accompanying paper. # Once you have read this disclaimer and taken appropriate precautions, # uncomment the following line and proceed at your own risk: # exec(check_program, exec_globals) #第58行 执行精度测试启动脚本opencompass.sh,具体操作命令如下,可以根据参数说明修改参数。请确保${work_dir} 已经通过export设置。 vllm_path=${vllm_path} \ host=$host \ service_port=${service_port} \ max_out_len=${max_out_len} \ batch_size=${batch_size} \ eval_datasets=${eval_datasets} \ model_name=${model_name} \ benchmark_type=${benchmark_type} \ bash -x opencompass.sh 参数说明: vllm_path:构造vllm评测配置脚本名字,默认为vllm。 host:与起服务的host保持一致,比如起服务为0.0.0.0,host设置也为0.0.0.0。 service_port:服务端口,与启动服务时的端口保持,比如8080。 max_out_len:在运行类似mmlu、ceval等判别式回答时,max_out_len建议设置小一些,比如16。在运行human_eval等生成式回答(生成式回答是对整体进行评测,少一个字符就可能会导致判断错误)时,max_out_len设置建议长一些,比如512,至少包含第一个回答的全部字段。 batch_size:输入的batch_size大小,不影响精度,只影响得到结果速度。 eval_datasets:评测数据集和评测方法,比如ceval_gen、mmlu_gen,不同数据集可以详见opencompass下面data目录。 model_name:评测模型名称,不需要与启动服务时的模型参数保持一致。 benchmark_type:作为一个保存log结果中的一个变量名,默认选eval。 参考命令: vllm_path=vllm host=0.0.0.0 service_port=8080 max_out_len=16 batch_size=2 eval_datasets=mmlu_gen model_name=llama_7b benchmark_type=eval bash -x opencompass.sh (可选)如果同时运行多个数据集,需要将不同数据集通过空格分开,加入到eval_datasets中,比如eval_datasets=ceval_gen mmlu_gen。运行命令如下所示。 cd opencompass python run.py --models vllm --datasets mmlu_gen ceval_gen --debug -w ${output_path} output_path: 要保存的结果路径。 (可选)创建新conda环境,安装vllm和opencompass。执行完之后,在 opencompass/configs/models/vllm/vllm_ppl.py 里是ppl的配置项。由于离线执行推理,消耗的显存相当庞大。其中以下参数需要根据实际来调整。 batch_size, 推理时传入的 prompts 数量,可配合后面的参数适当减少 offline,是否启动离线模型,使用 ppl 时必须为 True tp_size,使用推理的卡数 max_seq_len,推理的上下文长度,和消耗的显存直接相关,建议稍微高于prompts。其中,mmlu和ceval 建议 3200 另外,在 opencompass/opencompass/models/vllm_api.py 中,可以适当调整 gpu_memory_utilization。如果还是 oom,建议适当往下调整。 最后,如果执行报错提示oom,建议修改数据集的shot配置。例如mmlu,可以修改文件 opencompass/configs/datasets/mmlu/mmlu_ppl_ac766d.py 中的 fix_id_list, 将最大值适当调低。 ppl困惑度评测一般用于base权重测评,会将n个选项上拼接上下文,形成n个序列,再计算着n个序列的困惑度(perplexity)。其中,perplexity最小的序列所对应的选项即为这道题的推理结果。运行时间比较长,例如llama3_8b 跑完mmlu要2~3小时。 在npu卡上,使用多卡进行推理时,需要预置变量 export PYTORCH_NPU_ALLOC_CONF=expandable_segments:False 执行脚本如下: python run.py --models vllm_ppl --datasets mmlu_ppl -w ${output_path} output_path 指定保存结果的路径。 参考模型llama3系列模型,数据集mmlu为例,配置如下: 表1 参数配置 模型 max_seq_len batch_size shot数 llama3_8b 3200 8 采用默认值 llama3_70b 3200 4 [0, 1, 2] (可选) opencompass也支持通过本地权重来进行ppl精度测试。本质上使用transformers进行推理,因为没有框架的优化,执行时间最长。另一方面,由于是使用transformers推理,结果也是最稳定的。对单卡运行的模型比较友好,算力利用率比较高。对多卡运行的推理,缺少负载均衡,利用率低。 在昇腾卡上执行时,需要在 opencompass/opencompass/runners/local.py 中添加如下代码 import torch import torch_npu from torch_npu.contrib import transfer_to_npu 执行脚本如下 # for llama3_8b python run.py --datasets mmlu_ppl \ --hf-type base --hf-path {hf-path} \ --max-seq-len 3200 --max-out-len 16 --hf-num-gpus 1 --batch-size 4 \ -w {output_path} --debug 参数说明如下: --datasets:评测的数据集及评测方法,其中 mmlu 是数据集,ppl 是评测方法。 --hf-type:HuggingFace模型权重类型(base,chat),默认为chat,依据实际的模型选择。 --hf-path:本地 HuggingFace 权重的路径,比如/home/ma-user/nfs/model/Meta-Llama-3-8B。 --max-seq-len:模型的最大序列长度。 --max-out-len:模型的最大输出长度。 --hf-num-gpus:需要使用的卡数。 --batch-size:推理每次处理的输入数目。 -w:存放输出结果的目录。
  • 约束限制 确保容器可以访问公网。 使用opencompass工具需用vllm接口启动在线服务。 当前的精度测试仅适用于语言模型精度验证,不适用于多模态模型的精度验证。多模态模型的精度验证,建议使用开源MME数据集和工具(GitHub - BradyFU/Awesome-Multimodal-Large-Language-Models at Evaluation)。 配置需要使用的NPU卡,例如:实际使用的是第1张和第2张卡,此处填写为“0,1”,以此类推。 export ASCEND_RT_VISIBLE_DEVI CES =0,1
  • 使用Lm-eval精度测评工具 使用lm-eval工具暂不支持qwen-7b、qwen-14b、qwen-72b、chatglm2-6b、chatglm3-6b模型。 精度评测可以在原先conda环境,进入到一个固定目录下,执行如下命令。 rm -rf lm-evaluation-harness/ git clone https://github.com/EleutherAI/lm-evaluation-harness.git cd lm-evaluation-harness git checkout 383bbd54bc621086e05aa1b030d8d4d5635b25e6 pip install -e . 执行如下精度测试命令,可以根据参数说明修改参数。 lm_eval --model vllm --model_args pretrained=${vllm_path},dtype=auto,tensor_parallel_size=${tensor_parallel_size},gpu_memory_utilization=${gpu_memory_utilization},add_bos_token=True,max_model_len=${max_model_len},quantization=${quantization},distributed_executor_backend='ray' \ --tasks ${task} --batch_size ${batch_size} --log_samples --cache_requests true --trust_remote_code --output_path ${output_path} 参数说明: model_args:标志向模型构造函数提供额外参数,比如指定运行模型的数据类型; vllm_path是模型权重路径; max_model_len 是最大模型长度,默认设置为4096; gpu_memory_utilization是gpu利用率,如果模型出现oom报错,调小参数; tensor_parallel_size是使用的卡数; quantization是量化参数,使用非量化权重,去掉quantization参数;如果使用awq、smoothquant或者gptq加载的量化权重,根据量化方式选择对应参数,可选awq,smoothquant,gptq。 distributed_executor_backend是开启多进程服务方式,选择ray开启。 model:模型启动模式,可选vllm,openai或hf,hf代表huggingface。 tasks:评测数据集任务,比如openllm。 batch_size:输入的batch_size大小,不影响精度,只影响得到结果速度,默认使用auto,代表自动选择batch大小。 output_path:结果保存路径。 使用lm-eval,比如加载非量化或者awq量化,llama3.2-1b模型的权重,参考命令: lm_eval --model vllm --model_args pretrained="/data/nfs/benchmark/tokenizer/Llama-3.2-1B-Instruct/",dtype=auto,tensor_parallel_size=1,gpu_memory_utilization=0.7,add_bos_token=True,max_model_len=4096,distributed_executor_backend='ray' \ --tasks openllm --batch_size auto --log_samples --cache_requests true --trust_remote_code --output_path ./ 使用lm-eval,比如smoothquant量化,llama3.1-70b模型的权重,参考命令: lm_eval --model vllm --model_args pretrained="/data/nfs/benchmark/tokenizer_w8a8/llama3.1-70b/",dtype=auto,tensor_parallel_size=4,gpu_memory_utilization=0.7,add_bos_token=True,max_model_len=4096,quantization="smoothquant",distributed_executor_backend='ray' \ --tasks openllm --batch_size auto --log_samples --cache_requests true --trust_remote_code --output_path ./
  • lora_yaml样例模板 ### model model_name_or_path: /home/ma-user/ws/tokenizers/Qwen2-72B ### method stage: sft do_train: true finetuning_type: lora lora_target: all deepspeed: examples/deepspeed/ds_z3_config.json ### dataset dataset: identity,alpaca_en_demo template: qwen cutoff_len: 4096 packing: true max_samples: 1000 overwrite_cache: true preprocessing_num_workers: 16 ### output output_dir: /home/ma-user/ws/tokenizers/Qwen2-72B/lora logging_steps: 2 save_steps: 5000 plot_loss: true overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 learning_rate: 1.0e-5 num_train_epochs: 10.0 lr_scheduler_type: cosine warmup_ratio: 0.1 fp16: true ddp_timeout: 180000000 include_tokens_per_second: true include_num_input_tokens_seen: true
  • ds_z1_config.json样例模板 { "train_batch_size": "auto", "train_micro_batch_size_per_gpu": "auto", "gradient_accumulation_steps": "auto", "gradient_clipping": "auto", "zero_allow_untested_optimizer": true, "fp16": { "enabled": "auto", "loss_scale": 0, "loss_scale_window": 1000, "initial_scale_power": 16, "hysteresis": 2, "min_loss_scale": 1 }, "bf16": { "enabled": "auto" }, "zero_optimization": { "stage": 1, "allgather_partitions": true, "allgather_bucket_size": 5e8, "overlap_comm": true, "reduce_scatter": true, "reduce_bucket_size": 5e8, "contiguous_gradients": true, "round_robin_gradients": true } }
  • sft_yaml样例模板 ### model model_name_or_path: /home/ma-user/ws/tokenizers/Qwen2-72B ### method stage: sft do_train: true finetuning_type: full deepspeed: examples/deepspeed/ds_z3_config.json ### dataset dataset: identity,alpaca_en_demo template: qwen cutoff_len: 4096 packing: true max_samples: 1000 overwrite_cache: true preprocessing_num_workers: 16 ### output output_dir: /home/ma-user/ws/tokenizers/Qwen2-72B/sft logging_steps: 2 save_steps: 5000 plot_loss: true overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 learning_rate: 1.0e-5 num_train_epochs: 10.0 lr_scheduler_type: cosine warmup_ratio: 0.1 fp16: true ddp_timeout: 180000000 include_tokens_per_second: true include_num_input_tokens_seen: true
  • WiFi信息模拟 WiFi信息获取 获取WiFi信息示例: WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo wifiConnection = wifiManager.getConnectionInfo(); if (wifiConnection != null) { String bssid = wifiConnection.getBSSID(); } WiFi信息注入 针对当前连接WiFi BSSID,可以通过设置属性com.cph.wifi.bssid进行注入。 举例: setprop com.cph.wifi.bssid 02:00:00:00:00:00
共100000条