aboutsummaryrefslogtreecommitdiffstats
path: root/lib/os_mon
AgeCommit message (Collapse)Author
2014-08-29Clarify error for slow `cpu_sup` port initLuca Favatella
I noticed that running an R16B03-1 node on an overloaded host produced log entries like the following ones: ``` 2014-08-22 21:52:31 =ERROR REPORT==== Error in process <0.24112.3> on node '[email protected]' with exit value: {{case_clause,{data,4711}},[{cpu_sup,get_uint32_measurement,2,[{file,"cpu_sup.erl"},{line,227}]},{cpu_sup,measurement_server_loop,1,[{file,"cpu_sup.erl"},{line,585}]}]} ``` ``` ===== ALIVE Fri Aug 22 21:50:14 CEST 2014 [os_mon] cpu supervisor port (cpu_sup): Erlang has closed [os_mon] cpu supervisor port (cpu_sup): Erlang has closed [os_mon] cpu supervisor port (cpu_sup): Erlang has closed [os_mon] cpu supervisor port (cpu_sup): Erlang has closed ===== ALIVE Fri Aug 22 22:07:46 CEST 2014 ``` I performed a code inspection on the `cpu_sup` module and I concluded that the `case_clause` error shows a small issue in the `cpu_sup` module, that happens when the port used in `cpu_sup` is slow to start - as it may happen on an overloaded node. The `cpu_sup` `gen_server` process keeps in its state the pid of an unlinked process (called "measurement server" - see `cpu_sup:init/1`), in order to do dirty stuff (e.g. reading the filesystem, running OS commands) and start_link-ing & managing the connected process to a port (called "port server" - see `measurement_server_init/0`). So the process organization looks like this: ``` cpu_sup - measurement server - port server - port ``` When the measurement server start_links the port server (see `port_server_start/0`) it sends a `{self(), ?ping}` message to it and expects an answer within 6s, otherwise it returns `{error, timeout}` rather than the pid. This has two issues: * The measurement server keeps `{error, ...}` in its state as if it were a pid - that makes no sense; * A late `{Pid, {data,4711}}` response may arrive in the mailbox of the measurement server, that will believe it to be a request to be processed, causing a `case_clause` error. This commit teaches the measurement server to check the success of the initialization of the port server by matching on the return value of `port_server_start/0` (renamed to `port_server_start_link/0` for the sake of clarity) in order to fail earlier and with an error clearer than `{case_clause,{data,4711}}`. In such case I expect the measurement server to be restarted by the `cpu_sup` `gen_server` (see `handle_call/3`) - as before. BTW It is not clear to me when the `handle_info({'EXIT', _Port, Reason}, State)` may be called (the `cpu_sup` `gen_server` does not link to the measurement server) but I am leaving it.
2014-08-06os_mon: Fix so that all testcases are runLukas Larsson
For some reason only a new testcases were run on the majority of platforms. After this change all tests are run on all unix and win32 platforms.
2014-08-06os_mon: Ignore posix_only on windows and solarisLukas Larsson
2014-07-01Add 'disksup_posix_only' parameter to disksupJohannes Weißl
On embedded (Linux) systems the "df" program is very often provided by the Busybox (or Toolbox) project. This version does not provide the "-l" option (for displaying only local filesystems) used in disksup.erl. To make disksup work on these embedded platforms, this patch adds a new application parameter 'disksup_posix_only', to make diskup use only options defined in the POSIX standard: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/df.html
2014-04-07Update release notesErlang/OTP
2014-03-28os_mon: test tweaksDan Gudmundsson
child not started on windows so test fails
2014-03-21Raspberry PI / Android a minimal cross-compile configurationDmitry Kolesnikov
Enable a cross compile Erlang/OTP platform to Android or Raspberry PI using Android NDK. Port emulator and core application to support target HW platform. Exclude any add-on services required for OTP platform deployment into target hardware due to device fragmentation and jail-break requirements. * fix erts/emulator/beam/sys.h Disable redefinition of __noreturn macro * port erts/emulator/sys/unix/erl_child_setup.c Use techniques proposed by https://code.google.com/p/erlang4android to access system properties * fix erts/emulator/sys/unix/erl_unix_sys_ddll.c The static linking of emulator cannot find dlerror(), dlopen() symbols * port erts/emulator/sys/unix/sys.c make path to shell configurable at build time * port erts/etc/common/Makefile.in disable librt for *-linux-androideabi * port erts/lib_src/pthread/ethread.c Use techniques proposed by https://code.google.com/p/erlang4android to disable emulator crash if kernel threads are on. Replace unreliable pthread_sigmask() by sigprocmask() * port lib/erl_interface/src/connect/ei_connect.c Disable call to undefined gethostid() * port lib/erl_interface/src/connect/ei_resolve.c Use gethostbyname_r() on Android platform
2014-03-20Introduce runtime_dependencies in .app filesRickard Green
Most dependencies introduced are exactly the dependencies to other applications found by xref. That is, there might be real dependencies missing. There might also be pure debug dependencies listed that probably should be removed. Each application has to be manually inspected in order to ensure that all real dependencies are listed. All dependencies introduced are to application versions used in OTP 17.0. This since the previously used version scheme wasn't designed for this, and in order to minimize the work of introducing the dependencies.
2014-03-20Bump versions and ensure that all are "normal" versionsRickard Green
Ensure all are "normal" versions according to the new version scheme introduced in OTP 17.0
2014-02-24Add test suites performing app and appup file checksTobias Schlager
Add the mentioned test suites for *all* library and touched non-library applications.
2014-02-18Fix non-library appup files according to issue #240Tobias Schlager
Fix the appup files of runtime_tools and os_mon with wildcard version regexps. inets, odbc and ssh regexps have been corrected to match as originally intended.
2013-12-10Merge tag 'OTP_R16B03'Magnus Lidén
The R16B03 release Conflicts: lib/sasl/vsn.mk
2013-12-09Prepare releaseOTP_R16B03Erlang/OTP
2013-11-04Merge branch 'maint'Fredrik Gustafsson
2013-10-31Fix incorrect reporting of memory on OS X via memsup.Christopher Meiklejohn
Application memsup should be calculating free memory using the speculative pages, in the same manner that the Activity Monitor and top programs on OS X do. In addition, correct page size to 4096, based on verification of available memory between top, vm_stat and Activity Monitor.
2013-09-17Merge tag 'OTP_R16B02'Magnus Lidén
The R16B02 release Conflicts: lib/sasl/vsn.mk
2013-09-16Prepare releaseOTP_R16B02Erlang/OTP
2013-09-06Merge branch 'maint'Fredrik Gustafsson
2013-09-02Fix broken cpu_sup:nprocs and others on Solaris 64-bitSimon Cornish
The correct kstat datatype for nproc & avenrun_* is ui32, not ulong. Under 64-bit OTP builds garbage was returned because the wrong datatype was used. This patch correcs the datatype. It also adds an additional check in the test case for a slightly less insane return value.
2013-09-02Fix some compiler warningsSimon Cornish
2013-09-02Remove object files when cleaningSimon Cornish
Otherwise something like this will fail: ./otp_build setup --enable-m32-build make clean ./otp_build setup --enable-m64-build
2013-08-08Merge branch 'maint'Lukas Larsson
* maint: Add smoke tests
2013-08-08Merge branch 'lukas/smoketests/OTP-11221' into maintLukas Larsson
* lukas/smoketests/OTP-11221: Add smoke tests
2013-08-05Add smoke testsLukas Larsson
Smoke tests are meant to verify that a build of erlang has been successfull.
2013-08-01Merge branch 'maint'Fredrik Gustafsson
2013-07-26Fix compilation on SolarisMaciej Małecki
Trying to compile R16B01 on SmartOS resulted in following errors: gcc -c -o ../priv/obj/i386-pc-solaris2.11/ferrule.o -Werror=return-type -g -O2 -I/root/otp_src_R16B01/erts/i386-pc-solaris2.11 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-tree-copyrename -DHAVE_CONFIG_H ferrule.c ferrule.c:53:1: error: return type defaults to 'int' [-Werror=return-type] ... gcc -c -o ../priv/obj/i386-pc-solaris2.11/mod_syslog.o -Werror=return-type -g -O2 -I/root/otp_src_R16B01/erts/i386-pc-solaris2.11 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-tree-copyrename -DHAVE_CONFIG_H mod_syslog.c mod_syslog.c:50:1: error: return type defaults to 'int' [-Werror=return-type] mod_syslog.c: In function 'make_exit': mod_syslog.c:136:5: warning: incompatible implicit declaration of built-in function 'exit' [enabled by default] mod_syslog.c: In function 'main': mod_syslog.c:131:1: error: control reaches end of non-void function [-Werror=return-type] Adding return values and types to `main` functions in `mod_syslog.c` and `ferrule.c` fixed the build.
2013-07-22Merge branch 'maint'Björn-Egil Dahlberg
2013-07-22Merge branch 'egil/os_mon/fix-bsd-disksup/OTP-11207' into maintBjörn-Egil Dahlberg
* egil/os_mon/fix-bsd-disksup/OTP-11207: os_mon: Fix openbsd diskspace queries os_mon: Fix freebsd diskspace queries
2013-07-22Merge branch 'maint'Björn-Egil Dahlberg
2013-07-19os_mon: Relax disksup_SUITE test even moreBjörn-Egil Dahlberg
Capacity can be zero on certain filesystems. Remove reported mountpoints with zero capacity during tests since these reports false positives.
2013-07-18os_mon: Fix openbsd diskspace queriesBjörn-Egil Dahlberg
Use 'df -k -l' to query OpenBSD about diskspace on local disks. Same reasoning as for FreeBSD - additional filesystems without listing them all.
2013-07-18os_mon: Fix freebsd diskspace queriesBjörn-Egil Dahlberg
Use 'df -k -l' to query FreeBSD about diskspace on local disks. Previously 'df' -k -t ufs' was used but this will not handle zfs disks. Just use '-l' instead of listing potential filesystems.
2013-07-18os_mon: Refactor disksup_SUITEBjörn-Egil Dahlberg
Notably, remove ?line macro.
2013-07-18os_mon: Relax disksup_SUITE api testBjörn-Egil Dahlberg
2013-06-18Merge tag 'OTP_R16B01'Björn-Egil Dahlberg
The R16B01 release Conflicts: lib/sasl/vsn.mk
2013-06-17Prepare releaseOTP_R16B01Erlang/OTP
2013-06-12Merge branch 'maint'Björn-Egil Dahlberg
2013-06-12Update copyright yearsBjörn-Egil Dahlberg
2013-06-10Merge branch 'maint'Fredrik Gustafsson
2013-06-07versions updates for erl_interface, et and os_monFredrik Gustafsson
2013-06-05Merge branch 'siri/spawn-and-space'Siri Hansen
* siri/spawn-and-space: [sasl] In test, quote erlsrv executable in call to open_port/2 [test_server] Quote path to erl executable when starting slave nodes Quote path to erl executable in slave to allow space in path [sasl] Quote path to program run with open_port({spawn,... [os_mon] Quote path to programs run with open_port({spawn,... Conflicts: lib/os_mon/src/nteventlog.erl
2013-05-20Quote windows paths with spacesDan Gudmundsson
2013-04-19Convert XML files to UTF-8Hans Bolinder
2013-03-19[os_mon] Quote path to programs run with open_port({spawn,...Siri Hansen
This is to allow space in the path.
2013-03-15Merge branch 'yt/netbsd/OTP-10941' into maintFredrik Gustafsson
* yt/netbsd/OTP-10941: Moved ifdef NetBSD to proper place reduce bashism compilation fix for NetBSD compilation fix for NetBSD
2013-03-15Merge branch 'sm/fix-disksup-susv3/OTP-10945' into maintFredrik Gustafsson
* sm/fix-disksup-susv3/OTP-10945: This patch fixes disksup:get_disk_data for SUSv3, specifically OS X ML
2013-03-15Moved ifdef NetBSD to proper placeFredrik Gustafsson
2013-03-08compilation fix for NetBSDYAMAMOTO Takashi
taken from a pkgsrc patch: patch-lib_os__mon_c__src_memsup.c
2013-02-22Update copyright yearsBjörn-Egil Dahlberg
2013-01-31This patch fixes disksup:get_disk_data for SUSv3, specifically OS X MLSriram Melkote
On OS X Mountain Lion, the default output of df command includes iNode used and iNodes free, which apparent what SUSv3 specifies. This breaks the current parse logic and reports incorrect results. This patch adds support for the new format and ensures older versions of OS X produce this format by adding the -i switch (which is now the default). Adding support for this new format rather than changing df output as we'll presumably see this on other platforms eventually.