[Qemu-devel] [PATCH 0/3] synchronization profiler

Emilio G. Cota posted 3 patches 7 years, 2 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20180813171132.21939-1-cota@braap.org
Test checkpatch failed
Test docker-mingw@fedora passed
Test docker-clang@ubuntu passed
Test docker-quick@centos7 passed
There is a newer version of this series
[Qemu-devel] [PATCH 0/3] synchronization profiler
Posted by Emilio G. Cota 7 years, 2 months ago
This series adds a synchronization profiler, similar to the one
described in
  https://www.usenix.org/system/files/conference/atc12/atc12-final237.pdf
, although without using perf counters.

The profiler allows us to identify what wait times in locks/condvars are,
and where they are coming from. This info is very useful to
identify scalability bottlenecks imposed by locks, particularly
the BQL. I have patches (currently out of tree) to switch the
BQL for per-CPU locks to keep track of CPU state; the profiler was
really useful when doing that work.

The profiler is disabled by default, and can be enabled by configuring
with --enable-sync-profiler. Overhead is pretty low though, see
patch 1's commit log.

You can fetch the patches from:
  https://github.com/cota/qemu/tree/sync-profiler

Note that checkpatch gives some warnings, but they are false positives.

Thanks,

		Emilio



Re: [Qemu-devel] [PATCH 0/3] synchronization profiler
Posted by no-reply@patchew.org 7 years, 2 months ago
Hi,

This series seems to have some coding style problems. See output below for
more information:

Type: series
Message-id: 20180813171132.21939-1-cota@braap.org
Subject: [Qemu-devel] [PATCH 0/3] synchronization profiler

=== TEST SCRIPT BEGIN ===
#!/bin/bash

BASE=base
n=1
total=$(git log --oneline $BASE.. | wc -l)
failed=0

git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram

commits="$(git log --format=%H --reverse $BASE..)"
for c in $commits; do
    echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..."
    if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then
        failed=1
        echo
    fi
    n=$((n+1))
done

exit $failed
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
ac8f1dcaca qsp: track BQL callers directly
6c0b389867 monitor: show sync profiling info with 'info sync'
c43c6c8920 qsp: QEMU's Synchronization Profiler

=== OUTPUT BEGIN ===
Checking PATCH 1/3: qsp: QEMU's Synchronization Profiler...
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#263: 
new file mode 100644

ERROR: spaces required around that '*' (ctx:WxV)
#853: FILE: util/qsp.c:289:
+    void func_(type_ *obj, const char *file, unsigned line)             \
                      ^

ERROR: spaces required around that '*' (ctx:WxV)
#865: FILE: util/qsp.c:301:
+    int func_(type_ *obj, const char *file, unsigned line)              \
                     ^

ERROR: spaces required around that '-' (ctx:VxV)
#1028: FILE: util/qsp.c:464:
+    entry->time_s = e->ns * 1e-9;
                               ^

ERROR: spaces required around that '-' (ctx:VxV)
#1073: FILE: util/qsp.c:509:
+           "", e->time_s, e->n_acqs, e->ns_avg * 1e-3);
                                                    ^

total: 4 errors, 1 warnings, 841 lines checked

Your patch has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

Checking PATCH 2/3: monitor: show sync profiling info with 'info sync'...
Checking PATCH 3/3: qsp: track BQL callers directly...
=== OUTPUT END ===

Test command exited with code: 1


---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@redhat.com