查看源代码 OS_Mon 发布说明

本文档描述了对 OS_Mon 应用程序所做的更改。

Os_Mon 2.10.1

修复的 Bug 和故障

  • 修复了 memsup 内存警报,使其在可用时使用 available_memory,而不是始终使用 free_memory

    自有 ID: OTP-19304 辅助 ID: PR-8776, GH-8759

Os_Mon 2.10

改进和新特性

  • 函数规范和类型已添加到所有公共 API 函数中。

    自有 ID: OTP-18913

  • 文档已迁移为使用 Markdown 和 ExDoc。

    自有 ID: OTP-18955 辅助 ID: PR-8026

Os_Mon 2.9.1

修复的 Bug 和故障

  • 修复了 Windows 上一些良性的编译警告。

    自有 ID: OTP-18895

Os_Mon 2.9

修复的 Bug 和故障

  • 修复了内部 os_mon_sysinfo:get_disk_info/1 函数在 Windows 上运行多个驱动器时不会崩溃的问题。

    自有 ID: OTP-18246 辅助 ID: PR-6284 GH-6156

  • 修复了在 FreeBSD 上调用 cpu_sup:util/0,1 时的内存泄漏。

    自有 ID: OTP-18546 辅助 ID: GH-7070, PR-7071

改进和新特性

  • 引入了 disksup:get_disk_info/0disksup:get_disk_info/1 函数。 这些函数可用于立即获取有关当前磁盘使用情况的信息。

    自有 ID: OTP-18303 辅助 ID: PR-6384

  • 运行时依赖项已更新。

    自有 ID: OTP-18350

  • 支持 OpenBSD 上的 cpu_sup:util()

    自有 ID: OTP-18566 辅助 ID: PR-7080

Os_Mon 2.8.2.1

修复的 Bug 和故障

  • 修复了运行时依赖项。

    自有 ID: OTP-19064

Os_Mon 2.8.2

修复的 Bug 和故障

  • 避免在 cpu_supmemsup 关闭时,因 erlang:port_close 失败而产生的错误报告。 此错误自 OTP 25.3 (os_mon-2.8.1) 起存在。

    自有 ID: OTP-18559 辅助 ID: ERIERL-942

Os_Mon 2.8.1

修复的 Bug 和故障

  • 现在,当 cpu_supmemsup 关闭时,cpu_supmemsup 使用的端口程序会优雅地关闭。

    自有 ID: OTP-18469 辅助 ID: PR-6689

Os_Mon 2.8

改进和新特性

  • 现在可以将 disksupdisk_space_check_interval 配置参数设置为小于一分钟的值。

    自有 ID: OTP-18304 辅助 ID: PR-6385

Os_Mon 2.7.1

修复的 Bug 和故障

Os_Mon 2.7

改进和新特性

  • 已删除临时引入的配置参数 memsup_improved_system_memory_data

    * 可能的不兼容 *

    自有 ID: OTP-16943 辅助 ID: OTP-16906

  • 修复了 disk_sup 在 Linux 上查找 df 程序时,也会搜索系统 PATH 的问题。

    自有 ID: OTP-16944 辅助 ID: PR-2787

Os_Mon 2.6.1

改进和新特性

  • 引入了配置参数 memsup_improved_system_memory_data。 它可用于修改 memsup:get_system_memory_data() 返回的结果。 有关更多信息,请参阅 memsup 文档。

    请注意,配置参数计划在 OTP 24 中删除,并且修改后的结果计划从 OTP 24 开始使用。

    自有 ID: OTP-16906 辅助 ID: ERIERL-532

Os_Mon 2.6

修复的 Bug 和故障

  • memsup 现在在 macOS 上返回正确的系统内存量。

    自有 ID: OTP-16798 辅助 ID: ERL-1327

改进和新特性

  • 修复了 memsup:get_os_wordsize/0 以在 aarch64 上返回当前大小。

    自有 ID: OTP-16742

Os_Mon 2.5.2

修复的 Bug 和故障

  • 修复了 64 位 Windows 上各种编译器警告。

    自有 ID: OTP-15800

改进和新特性

  • 重构了对已弃用和已删除函数的内部处理。

    自有 ID: OTP-16469

Os_Mon 2.5.1.1

改进和新特性

  • 引入了配置参数 memsup_improved_system_memory_data。 它可用于修改 memsup:get_system_memory_data() 返回的结果。 有关更多信息,请参阅 memsup 文档。

    请注意,配置参数计划在 OTP 24 中删除,并且修改后的结果计划从 OTP 24 开始使用。

    自有 ID: OTP-16906 辅助 ID: ERIERL-532

Os_Mon 2.5.1

修复的 Bug 和故障

  • 修复了 disk_sup 在 Linux 上确定挂载的文件系统是否已满时忽略 squashfs 的问题。

    自有 ID: OTP-15778

  • 修复了 cpu_sup:util() 在不使用 gnu libc 的系统(例如 Alpine OS)上始终返回 100% 的错误。

    自有 ID: OTP-15974 辅助 ID: ERL-1012

Os_Mon 2.5

修复的 Bug 和故障

  • 修复了 cpu_sup:util() 的类型规范。

    自有 ID: OTP-15770 辅助 ID: PR-2208

改进和新特性

  • 应用程序 otp_mibs 已从 OTP 中删除。 其某些组件 (mibs) 已移动到其他应用程序 (snmp),或已完全删除 (os_mon)。

    自有 ID: OTP-14984 辅助 ID: OTP-15329

Os_Mon 2.4.7

修复的 Bug 和故障

  • 由于新版 Android 版本中 SELinux 强制执行的 /proc 限制,修复了 cpu_sup,以便它使用 sysinfo 系统调用而不是读取 /proc/loadavg 来获取一些基本的 CPU 统计信息。

    自有 ID: OTP-15387 辅助 ID: PR-1966

Os_Mon 2.4.6

修复的 Bug 和故障

  • 改进了文档。

    自有 ID: OTP-15190

Os_Mon 2.4.5

修复的 Bug 和故障

  • 修复了 disksup 处理路径中带有空格的挂载路径的问题。

    自有 ID: OTP-14513

Os_Mon 2.4.4

修复的 Bug 和故障

  • 删除了文档中所有旧的未使用的文件。

    自有 ID: OTP-14475 辅助 ID: ERL-409, PR-1493

Os_Mon 2.4.3

修复的缺陷和故障

  • 在 macOS 10.13 (High Sierra) 上,disksup 无法获取任何使用新的 APFS 文件系统的磁盘的信息。此问题已得到纠正。

    自有 ID: OTP-14560 辅助 ID: ERL-461

Os_Mon 2.4.2

改进和新功能

  • 在 os_mon 中支持 s390x。

    自有 ID: OTP-14161 辅助 ID: PR-1309

Os_Mon 2.4.1

修复的缺陷和故障

  • 修复 cpu_sup:util/1 的类型规范

    自有 ID: OTP-13526 辅助 ID: PR-1029

  • 修复 SUN/SPARC 上的严格编译

    自有 ID: OTP-13548 辅助 ID: PR-1046

  • 在 Mac OSX 上实现 cpu_sup:util/0,1

    自有 ID: OTP-13597 辅助 ID: PR-1049

  • 修复 64 位 FreeBSD 和 64 位 Linux PPC 上的 memsup:get_os_wordsize()

    自有 ID: OTP-13601 辅助 ID: PR-1039

Os_Mon 2.4

改进和新功能

  • cpu_sup 应该在 BSD 上使用原生 sysctl/libkvm 调用

    这避免了每次我们只想收集负载平均值时都使用 os:cmd 分叉。riak 每秒都会这样做,导致大量不必要的负载。

    自有 ID: OTP-12730

  • 为 FreeBSD 实现原生 cpu_sup:util/0,1

    自有 ID: OTP-12796

Os_Mon 2.3.1

修复的缺陷和故障

  • 当 loadavg 的整数部分超过 2 位数时,不要因 badmatch 而崩溃。

    自有 ID: OTP-12581

改进和新功能

  • 修复 memsup 在 OpenBSD 上的编译。

    自有 ID: OTP-12404

Os_Mon 2.3

改进和新功能

  • 添加一个新的应用程序参数“disksup_posix_only”,使 diskup 仅使用 POSIX 标准中定义的选项。

    自有 ID: OTP-12053

Os_Mon 2.2.15

修复的缺陷和故障

  • 以下应用程序的应用程序升级 (appup) 文件已更正

    asn1、common_test、compiler、crypto、debugger、dialyzer、edoc、eldap、erl_docgen、et、eunit、gs、hipe、inets、observer、odbc、os_mon、otp_mibs、parsetools、percept、public_key、reltool、runtime_tools、ssh、syntax_tools、test_server、tools、typer、webtool、wx、xmerl

    一个新的用于测试 appup 文件的测试实用程序已添加到 test_server。现在 OTP 中的大多数应用程序都使用它。

    (感谢 Tobias Schlager)

    自有 ID: OTP-11744

改进和新功能

  • 对 erlang:open_port/2 使用 'spawn' 的调用已更新为处理命令路径中的空格。

    自有 ID: OTP-10842

Os_Mon 2.2.14

修复的缺陷和故障

  • 修复通过 memsup 在 OS X 上不正确的内存报告。感谢 Christopher Meiklejohn。

    自有 ID: OTP-11454

Os_Mon 2.2.13

修复的缺陷和故障

  • 使用 'df -k -l' 查询 FreeBSD 和 OpenBSD 上有关本地磁盘的磁盘空间。之前使用 'df' -k -t ufs',但这不会处理 zfs 或其他磁盘。只需使用 '-l' 而不是列出潜在的文件系统。

    自有 ID: OTP-11207

改进和新功能

  • 修复 Solaris 上的编译。感谢 Maciej Malecki。

    自有 ID: OTP-11213

  • 修复 Solaris 64 位上损坏的 cpu_sup:nprocs 和其他问题。感谢 Simon Cornish。

    自有 ID: OTP-11298

Os_Mon 2.2.12

修复的缺陷和故障

  • NetBSD 的编译修复。感谢 YAMAMOTO Takashi。

    自有 ID: OTP-10941

改进和新功能

  • 修复了 SUSv3 的 disksup:get_disk_data,特别是 OS X ML。感谢 Sriram Melkote。

    自有 ID: OTP-10945

Os_Mon 2.2.11

修复的缺陷和故障

  • 删除了对 snmp 的已弃用函数调用

    自有 ID: OTP-10448

Os_Mon 2.2.10

修复的缺陷和故障

  • 在 disksup 的内部调用中添加了无限超时,以使其在非常高的负载下正常工作。

    自有 ID: OTP-10100

  • 澄清 os_mon 端口程序的错误消息

    自有 ID: OTP-10161

Os_Mon 2.2.9

修复的缺陷和故障

  • 修复 memsup 中的段错误

    当 /proc/meminfo 不包含有关缓冲区/缓存的信息时(例如在 OpenVZ 容器内)(感谢 Anton Vorobev)

    自有 ID: OTP-9913

Os_Mon 2.2.8

改进和新功能

  • 如果限制作业数量,例如使用 'make -j6' 或 'make -j10',现在可以使用并行 make 构建 Erlang/OTP。由于缺少一些依赖项,目前 'make -j' 无法工作。

    自有 ID: OTP-9451

  • 元组函数(具有模块名称和函数的双元素元组)现在已正式弃用,将在 R16 中删除。请改用 'fun M:F/A'。为了让您知道您的系统使用了元组函数,第一次应用元组函数时,将向错误记录器发送警告。

    自有 ID: OTP-9649

Os_Mon 2.2.7

修复的缺陷和故障

  • 删除杂项编译器警告

    自有 ID: OTP-9542

Os_Mon 2.2.6

修复的缺陷和故障

  • 添加对 NetBSD 的 memsup 和 disksup 支持(感谢 Andrew Thompson)

    自有 ID: OTP-9216

  • 添加对 DragonFlyBSD 的 memsup 支持

    os_mon 已经部分支持 DragonFly,但在尝试启动 os_mon 应用程序时,它会因 memsup 中未知操作系统的错误而崩溃。此补丁更改了 memsup,使其在 DragonFly 上时使用 FreeBSD sysctl 方法获取内存信息。(感谢 Andrew Thompson)

    自有 ID: OTP-9217

Os_Mon 2.2.5

改进和新功能

  • 由 tidier 建议的清理以及类型和规范的现代化。

    自有 ID: OTP-8455

Os_Mon 2.2.4

修复的缺陷和故障

  • Memsup 在 macOS X Snowleopard 上没有正确读取内存。现在已更正此问题。(感谢 Joel Reymont)

    自有 ID: OTP-8211

  • 删除 cpu_sup.erl 中未使用的代码。

    自有 ID: OTP-8226

改进和新功能

  • 文档现在使用大多数平台上存在的开源工具 (xsltproc 和 fop) 构建。一个可见的变化是删除了框架。

    自有 ID: OTP-8201

Os_Mon 2.2.3

修复的缺陷和故障

  • memsup.c 中缺少定义导致 IRIX 机器上出现构建错误。现在已修复此问题。

    自有 ID: OTP-8094

Os_Mon 2.2.2

修复的缺陷和故障

  • disksup:get_disk_data/0 返回的磁盘容量以字节为单位,而不是文档中说明的千字节。该问题仅发生在 Windows 上,现已更正。

    * 可能的不兼容 *

    自有 ID: OTP-7741

Os_Mon 2.2.1

已修复的缺陷和故障

  • memsup 中的一个错误可能导致 os_mon 在 Windows 上报告 2GB 到 4GB 内存范围内的错误内存值。此问题现已修复。

    内部 ID: OTP-7944

改进和新功能

  • 增加了对 dragonfly OS 的支持。

    内部 ID: OTP-7938

Os_Mon 2.2

改进和新功能

  • 版权声明已更新。

    内部 ID: OTP-7851

Os_Mon 2.1.8

已修复的缺陷和故障

  • 针对 64 位环境的 OTP-OS-MON-MIB.mib 问题现已修复。该 mib 已扩展了 64 位内存检索的对应部分。

    此外,还在 memsup 模块中添加了一个新函数 get_os_wordsize/0

    内部 ID: OTP-7441

  • memsup.c 中的一个错误导致在 bsd 环境下编译崩溃。此问题现已修复。

    内部 ID: OTP-7558

Os_Mon 2.1.7

已修复的缺陷和故障

  • 修复了在 NetBSD 上发生的构建错误(感谢 Per Hedeland 和 Raphael Langerhorst)

    内部 ID: OTP-7505

改进和新功能

Os_Mon 2.1.6

已修复的缺陷和故障

  • 在 darwin 平台上,当环境区域设置不符合 C 区域设置时,cpu_sup 中的系统信息检索会导致错误,从而导致进程终止。

    内部 ID: OTP-7320

Os_Mon 2.1.5

改进和新功能

  • 现在,Linux 上的 CPU 使用率是通过端口程序而不是 Erlang 中的 os:cmd 来测量的。这应该可以提高性能。

    内部 ID: OTP-7108 辅助 ID: OTP-6935

Os_Mon 2.1.3

改进和新功能

  • 扩展了 Linux 上 memsup 内存探测功能,使用端口程序来探测内存使用情况。这比之前的实现更快。

    内部 ID: OTP-6860 辅助 ID: seq10616

Os_Mon 2.1.2.1

改进和新功能

  • 次要的 Makefile 更改。

    内部 ID: OTP-6689

OS_Mon 2.1.2

已修复的缺陷和故障

  • memsup_system_only 标志设置为 true 时,函数 os_mon_mib:get_load/1 中会发生 badmatch 异常。

    内部 ID: OTP-6351 辅助 ID: seq10517

OS_Mon 2.1.1

已修复的缺陷和故障

  • 未在 Mac OS X 上构建。

    增加了对 IRIX 的支持。(感谢 Michel Urvoy 和 Daniel Solaz。)

    内部 ID: OTP-6136

改进和新功能

Os_Mon 2.1

已修复的缺陷和故障

  • 在 2.0 中,memsupdisksup 中引入了对 alarm_handler:get_alarms/0 的调用。但是,如果未使用默认的 alarm_handler 事件处理程序,这将导致问题,现在已删除该调用。(感谢 Serge Aleynikov 指出这一点。)

    内部 ID: OTP-6029

  • 已更正一个在极少数情况下导致 cpu_sup 崩溃的错误。

    内部 ID: OTP-6102 辅助 ID: seq10312

OS_Mon 2.0

关于向后兼容性的说明:OS_Mon 2.0 在正常运行情况下的行为是向后兼容的,但在错误情况下有所变化:服务不会终止,并且 API 函数不会在所有之前会引发异常的情况下引发异常。此外,在服务确实终止的情况下,退出原因可能不同。请参阅下面的详细信息。

已修复的缺陷和故障

  • 当 OS_Mon 未运行时,或者当该服务对操作系统不可用时,或者当该服务未启动时,调用 OS_Mon 服务(cpu_sup、disksup 等)将不再导致异常。相反,会通过 error_logger 发出警告,并返回一个虚拟值,该虚拟值在各个服务的手册页中指定。

    原因是,对于 OS-MON-MIB 和其他 OS_Mon 用户而言,不必在分布式 Erlang 系统的每个节点上都启动服务。

    内部 ID: OTP-4332 辅助 ID: seq7358

  • 已删除 OTP-OS-MON-MIB 中对已过时的 EVA 应用程序的引用。

    内部 ID: OTP-5699

  • 将选项 memsup_system_only 设置为 true 无效,但会导致 memsup 进程崩溃。

    内部 ID: OTP-5890 辅助 ID: seq10185

  • cpu_sup:nprocs/0 在 FreeBsd 上返回 0。

    内部 ID: OTP-5901

  • 如果重新启动 OS_Mon 服务 disksupmemsup,则可以设置同一警报两次。此外,当应用程序停止时,不会清除已设置的警报。

    内部 ID: OTP-5910

改进和新功能

  • disksupmemsup 中的阈值和时间间隔现在可以在运行时配置。

    内部 ID: OTP-4246 辅助 ID: Seq7230

  • memsup 现在可以处理具有超过 4GB RAM 的系统。

    内部 ID: OTP-5800 辅助 ID: seq10130

  • 已审核整个 OS_Mon 应用程序(代码和文档),并进行了相应的更新,目的是使该应用程序更加健壮、统一且更易于配置。

    在正常操作下的行为是向后兼容的。但是,可恢复的错误现在不再终止受影响的服务(因此也可能终止整个应用程序),而是使用 error_logger 来警告用户是否/何时发生此类错误。此外,在发生不可恢复的错误时,服务在行为和退出原因方面更加统一。请参阅下面的详细信息,并参阅手册页了解详细信息。

    端口处理已统一,这意味着如果端口程序发送垃圾数据或意外终止,则所有 OS_Mon 服务现在都以相同的方式处理,即立即终止进程,退出原因为 {port_error,Garbage}{port_died,Reason}

    应用程序配置参数处理已统一。错误的参数值不再被静默忽略(disksup)或导致应用程序终止(memsupos_sup)。相反,会发出警告,并使用参数的默认值。此外,还更正了一些可能意外接受错误参数值的情况。

    消息处理已统一。未知 (gen_server-) 调用会导致进程终止,而所有 OS_Mon 服务现在都会忽略未知的强制类型转换和消息。

    内部 ID: OTP-5897

  • 已对 os_sup 服务进行以下更改

    它现在可以在 Windows 上使用,使用 nteventlog 作为后端。

    在 Solaris 上,现在可以在 os_sup 进程外部启用该服务(即,为 syslogd 等安装新的配置文件)。这样做的原因是,Erlang 模拟器通常不应以 root 权限运行,否则需要这样做。必须将新的应用程序配置参数 os_sup_config 设置为 false

    此外,现在可以使用新的配置参数 os_sup_mfa 配置 os_sup,以便在从操作系统收到消息时调用任意 Erlang 函数。

    内部 ID: OTP-5925

  • 已重写 memsup 服务,将受监管的 memsup_helper 替换为链接的帮助进程。这使 memsup 进程具有更多控制权,并防止出现与接收到的内存数据不同步,从而可能返回错误结果的情况。

    内部 ID: OTP-5927

OS_Mon 1.8.1

已修复的缺陷和故障

  • 在机器(硬件)上首次调用 cpu_sup:util/0 时,如果该机器已经运行了很长时间,则会因错误原因 negative_diff 而失败。

    自有 ID:OTP-5869 辅助 ID:seq10166

OS_Mon 1.8

改进和新功能

  • OS_Mon 应用程序的 memsup 部分已变得更加稳定。如果收集内存数据时出现(可能是暂时的)问题,则接口函数(get_memory_data/0, get_system_memory_data/0)现在不会失败,而是返回先前收集的值(如果有),否则返回虚拟值。此外,还会打印警告消息。

    * 可能的不兼容 *

    自有 ID:OTP-5798

OS_Mon 1.7.4

修复的错误和故障

  • 纠正了错误处理/错误恢复中的几个问题(尤其是在 OS_Mon 启动时)。

    自有 ID:OTP-5559

OS_Mon 1.7.3

改进和新功能

  • memsup.c 现在可以在 OpenBSD 上编译。(感谢 Geoff White 和 Jay Nelson。)

    disksupcpu_sup 模块现在可以在 Mac OS X 上工作(已在 Mac OS 10.3.8 上测试)。

    memsup 模块现在应该可以在 Linux 2.6.* 以及较旧的 Linux 版本上工作。(/proc/meminfo 在不同版本的 Linux 中格式略有不同。)

    自有 ID:OTP-5421
    辅助 ID:OTP-5194, OTP-5228, OTP-5291

OS_Mon 1.7.2

此版本与 1.7 相同。