Commit Graph

10 Commits (5bd41b850f65b8054d94b58b787704bb45ede16c)

Author SHA1 Message Date
Matti Paaso 974c210835 Update license headers and add new license files
- Renamed LICENSE.LGPL to LICENSE.LGPLv21
- Added LICENSE.LGPLv3
- Removed LICENSE.GPL

Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2
Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
2014-09-24 12:26:19 +02:00
Thiago Macieira bbcdfb324b Fix file descriptor leak in the perf event counter
We opened the counter at every start(), even if we had already started
before. Some of the benchlib's options caused it to start() and stop()
over and over again, like -minimumvalue and -minimumtotal, which could
leak to fd exhaustion (EMFILE).

Change-Id: Ifeb7cca65c758877be600dc22928bea74f499934
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Jason McDonald <macadder1@gmail.com>
2014-01-10 02:33:32 +01:00
Thiago Macieira bad93acfba Fix compilation of QtTest on Linux systems with old kernel headers
Hardcode our perf_event_open(2) function to simply return -1 and set
errno to ENOSYS. This will disable the functionality.

People compiling Qt with such old headers will probably carry quite a
bit of dead code in QtTest. They should upgrade.

Task-number: QTBUG-32507
Change-Id: I774b4a81bee5c3e2ddc75fa52520d123a6bebed9
Reviewed-by: Jason McDonald <macadder1@gmail.com>
2013-07-21 04:06:21 +02:00
Thiago Macieira 408fa1e2b9 Add support for attributes in the -perfcounter argument
Five attributes are supported, matching what the perf(1) tool
supports. The 'p' attribute (precise IP reporting) wasn't added
because we don't do assembly-level debugging with benchlib.

Change-Id: I726f735a5bcc0c97e62cde0fbe0843597068ad7c
Reviewed-by: Jason McDonald <macadder1@gmail.com>
2013-03-06 21:50:28 +01:00
Thiago Macieira 3963ab9d73 Store the performance counter attributes globally
This will allow us to modify more attributes from the command-line

Change-Id: I84d4933cbfa2b69c4e1009eaf3e005cfc3e7e01c
Reviewed-by: Jason McDonald <macadder1@gmail.com>
2013-03-06 21:50:28 +01:00
Thiago Macieira 914b56dbf5 Add support for the cache-related operations counters in benchlib
This adds support for checking cache accesses and misses, per
operation (read, write and prefetch) as well as per cache level (L1
for data, L1 for instructions, last level).

The branch prediction unit (BPU) is also accessed via the cache
monitor subsystem.

Change-Id: I8fa96b141cc777c9d231bd57fa36bca33ae7bdfd
Reviewed-by: Jason McDonald <macadder1@gmail.com>
2013-03-06 21:50:28 +01:00
Thiago Macieira 051f68c2d3 Add support for more performance counters in QBenchlib
Added support for most hardware and software counters available on
Linux 3.3. The cache-based counters are missing because they need
special handling.

Also added an option that lists available counters. Note that the list
is of counters the library knows about, not the counters that the
hardware can measure.

Change-Id: I9f6fb09b5460bf4ac6082081611c1d6ff806a3fa
Reviewed-by: Jason McDonald <macadder1@gmail.com>
2013-03-06 21:50:28 +01:00
Thiago Macieira 93fe3895cf Add more events for QBenchlib, based on the Linux perf counters
Change-Id: Ic7e7e122bfe3995eb7ea033c744fd501579ea8fa
Reviewed-by: Jason McDonald <macadder1@gmail.com>
2013-03-06 21:50:28 +01:00
Thiago Macieira c63420a117 Implement the Linux Perf Counter backend for benchlib
Currently, we only support one event type: counting CPU cycles with
hardware counters. There are no fallbacks if this hardware counter is
not available, and there is currently no way to specify other
counters.

Benchlib only supports reporting one event per benchmark, even though
the event counter interface allows specifying more than one. Still,
the hardware usually has limitations on how many events it can monitor
at a time, and we'd prefer to have the counter running at 100% of the
time, so this will not change.

Change-Id: I79858a3ad1e696dc4b7b72c420e5a04b67cd55de
Reviewed-by: Jason McDonald <macadder1@gmail.com>
2013-03-06 21:50:28 +01:00
Thiago Macieira 9d72259f94 Add the skeleton Linux perf events counter for QtTest
Currently, it only prints "perf available" if you use the -perf option
and perf is available. The implementation comes in the next commits.

Change-Id: Ic6cdee70e21df25780799a4bc31ca2c2d923b9f8
Reviewed-by: Jason McDonald <macadder1@gmail.com>
2013-03-06 21:50:28 +01:00