1. 11 8月, 2017 1 次提交
  2. 04 3月, 2017 1 次提交
  3. 20 11月, 2015 1 次提交
    • A
      perf tests: Pass the subtest index to each test routine · 721a1f53
      Arnaldo Carvalho de Melo 提交于
      Some tests have sub-tests we want to run, so allow passing this.
      
      Wang tried to avoid having to touch all tests, but then, having the
      test.func in an anonymous union makes the build fail on older compilers,
      like the one in RHEL6, where:
      
        test a = {
      	.func = foo,
        };
      
      fails.
      
      To fix it leave the func pointer in the main structure and pass the subtest
      index to all tests, end result function is the same, but we have just one
      function pointer, not two, with and without the subtest index as an argument.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Wang Nan <wangnan0@huawei.com>
      Link: http://lkml.kernel.org/n/tip-5genj0ficwdmelpoqlds0u4y@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      721a1f53
  4. 16 5月, 2015 1 次提交
  5. 12 5月, 2015 2 次提交
    • A
      perf tests: Fix map_groups refcount test · 8b00f469
      Arnaldo Carvalho de Melo 提交于
      When introducing reference counting for struct thread instances I forgot
      to remove the synthetic threads from the machine's rbtree so that it
      then the threads would have just one reference and thus the
      thread__put() replacing the thread__delete() really turns into a
      thread__delete() (thread->refcnt == 1 at thread__put() time) and thus
      drop the thread->mg refcount, as expected by the this test.
      
      Fix it by calling machine__remove_thread() (the counterpart of
      machine__findnew_thread()) on all the synthetic threads after the
      checks that involves the rbtree were done.
      
      Before:
      
        # perf test -v mg
        30: Test thread mg sharing                                 :
        --- start ---
        test child forked, pid 26995
        FAILED tests/thread-mg-share.c:68 wrong refcnt (4 != 3)
        test child finished with -1
        ---- end ----
        Test thread mg sharing: FAILED!
        #
      
      After:
      
        # perf test mg
        30: Test thread mg sharing: Ok
        #
      
      Fixes: b91fc39f ("perf machine: Protect the machine->threads with a rwlock")
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Borislav Petkov <bp@suse.de>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Don Zickus <dzickus@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lkml.kernel.org/n/tip-uoqq0fjei90ohhhcboz6ay33@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      8b00f469
    • A
      perf tests: Show refcounting broken expectations in thread-mg-share test · 8f196013
      Arnaldo Carvalho de Melo 提交于
      To help understand the failure.
      
        [acme@zoo linux]$ perf test -v 30
        30: Test thread mg sharing                                 :
        --- start ---
        test child forked, pid 12275
        FAILED tests/thread-mg-share.c:68 wrong refcnt (4 != 3)
        test child finished with -1
        ---- end ----
        Test thread mg sharing: FAILED!
        [acme@zoo linux]$
      
      This is under investigation, the thread__delete() calls were replaced
      with thread__put(), and those cause mismatches because now we need to be
      more judicious with the thread lifetime management.
      
      I.e. previously the thread__delete() would drop the map_group refcount,
      but now since thread__put doesn't call thread__delete() necessarily.
      because we have other refcount holders, the map_group refcount will not
      be as we expected when this test was implemented.
      
      Will be fixed soon...
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Borislav Petkov <bp@suse.de>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Don Zickus <dzickus@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lkml.kernel.org/n/tip-9y8e3f7ukzco5loxvnlitpfq@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      8f196013
  6. 09 5月, 2015 1 次提交
    • A
      perf machine: Protect the machine->threads with a rwlock · b91fc39f
      Arnaldo Carvalho de Melo 提交于
      In addition to using refcounts for the struct thread lifetime
      management, we need to protect access to machine->threads from
      concurrent access.
      
      That happens in 'perf top', where a thread processes events, inserting
      and deleting entries from that rb_tree while another thread decays
      hist_entries, that end up dropping references and ultimately deleting
      threads from the rb_tree and releasing its resources when no further
      hist_entry (or other data structures, like in 'perf sched') references
      it.
      
      So the rule is the same for refcounts + protected trees in the kernel,
      get the tree lock, find object, bump the refcount, drop the tree lock,
      return, use object, drop the refcount if no more use of it is needed,
      keep it if storing it in some other data structure, drop when releasing
      that data structure.
      
      I.e. pair "t = machine__find(new)_thread()" with a "thread__put(t)", and
      "perf_event__preprocess_sample(&al)" with "addr_location__put(&al)".
      
      The addr_location__put() one is because as we return references to
      several data structures, we may end up adding more reference counting
      for the other data structures and then we'll drop it at
      addr_location__put() time.
      Acked-by: NDavid Ahern <dsahern@gmail.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Borislav Petkov <bp@suse.de>
      Cc: Don Zickus <dzickus@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lkml.kernel.org/n/tip-bs9rt4n0jw3hi9f3zxyy3xln@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      b91fc39f
  7. 17 7月, 2014 1 次提交
  8. 28 4月, 2014 1 次提交