Frequently Asked Questions

This page lists and answer common questions that have been seen on mailing list or elsewhere.

What are the operating system and hardware requirements?

We develop OML for GNU/Linux systems on x86 hardware, because that's what we use for our other work. We release both x86 and amd64 packages for Ubuntu/Debian/Fedora/CentOS/ArchLinux. OML is known to build and run on other platforms, including Mac OS X on Intel and PPC hardware, and ARM processors running Linux. It's not as well tested on those platforms though. If you've had success running OML on another combination of OS and hardware, we'd love to know about it (tell us on the mailing list)!

We maintain a list of systems for which OML has been reported to build successfully. Please let us know if you know others.

How to accomodate a lot of clients applications reporting to the same server?

If you plan to have several hundreds of OML client applications, which will connect to the OML server to send measurements to it, then you may consider increasing the maximum open file descriptor limit for the system user which will run the oml2-server daemon. This can be done by editing /etc/security/limits.conf and adding the line:

your_oml2_user_here   -    nofile     100000

This allows a maximum of 100K open sockets/files per process for the user your_oml2_user_here. The default in Ubuntu is 1024. If this is not increased you may run into a problem where the oml2-server does not accept any more incoming TCP connections after its 1024th connected client.

I'm seeing lots of zeroes in my measurement database!

The OML client library has two ways of generating outputs from its filters: sample-based output and interval-based output. If you use interval-based filtering, the client library generates a measurement from every filter at the interval you specify. If there were no samples injected into a measurement point during that interval, any filters attached to that measurement point will still generate a "null" measurement output. For numeric types this is always a zero value. Check if you are using interval filtering and check how often your application is calling omlc_inject(3).

What are these oml_ts_client and oml_ts_server I see in the database?

The meaning of oml_ts_client and oml_ts_server is documented in the Doxygen documentation.

My application segfaults (or, alternatively, reports garbage)

One possible reason is that you have used instrumentation code from 2.8 or earlier with liboml 2.9 or later. There has been some changes in the memory management code which requires a few lines added here and there for your code to work smoothly (particularly if you are reporting strings or blobs). See this page on porting pre-2.9 applications for details.

This might be your occasion to port old instrumentation to using oml2-scaffold, which would hide these API changes in the future (if any).