查看源代码 OS_Mon 发布说明
本文档描述了对 OS_Mon 应用程序所做的更改。
Os_Mon 2.10.1
修复的 Bug 和故障
修复了
memsup
内存警报,使其在可用时使用available_memory
,而不是始终使用free_memory
。
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/0
和disksup: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_sup
和memsup
关闭时,因erlang:port_close
失败而产生的错误报告。 此错误自 OTP 25.3 (os_mon-2.8.1) 起存在。自有 ID: OTP-18559 辅助 ID: ERIERL-942
Os_Mon 2.8.1
修复的 Bug 和故障
现在,当
cpu_sup
和memsup
关闭时,cpu_sup
和memsup
使用的端口程序会优雅地关闭。自有 ID: OTP-18469 辅助 ID: PR-6689
Os_Mon 2.8
改进和新特性
现在可以将
disksup
的disk_space_check_interval
配置参数设置为小于一分钟的值。自有 ID: OTP-18304 辅助 ID: PR-6385
Os_Mon 2.7.1
修复的 Bug 和故障
在配备 Apple Silicon 的 Mac 上,
memsup:get_os_wordsize/0
将返回 32 而不是 64。自有 ID: OTP-17441
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
改进和新功能
memsup:get_system_memory_data/0
中的内存信息现在在其 Linux 属性列表中有其他条目。内部 ID: OTP-7409 辅助 ID: seq10984
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
改进和新功能
disksup
:现在使用round(T*100)
而不是trunc(T*100)
,当给定浮点数T
时设置阈值。内部 ID: OTP-6153
Os_Mon 2.1
已修复的缺陷和故障
在 2.0 中,
memsup
和disksup
中引入了对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 服务
disksup
或memsup
,则可以设置同一警报两次。此外,当应用程序停止时,不会清除已设置的警报。内部 ID: OTP-5910
改进和新功能
disksup
和memsup
中的阈值和时间间隔现在可以在运行时配置。内部 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
)或导致应用程序终止(memsup
,os_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。)disksup
和cpu_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 相同。