All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC 00/14] perf pollfd v3
@ 2014-09-10 14:08 Arnaldo Carvalho de Melo
  2014-09-10 14:08 ` [PATCH 01/14] perf evlist: Introduce perf_evlist__filter_pollfd method Arnaldo Carvalho de Melo
                   ` (14 more replies)
  0 siblings, 15 replies; 48+ messages in thread
From: Arnaldo Carvalho de Melo @ 2014-09-10 14:08 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Borislav Petkov, Corey Ashford, David Ahern, Don Zickus,
	Frederic Weisbecker, Ingo Molnar, Jean Pihet, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian

From: Arnaldo Carvalho de Melo <acme@redhat.com>

Hi,

	Main different to what was discussed in v2[1]:

	Poll all event file descriptors, not just the ones mmaped.

	This is a bug that was present before, noticed by Adrian Hunter while
reviewing this patchkit, i.e. we were polling just the mmaped ones, because
then we would look at all the ring buffers when just one of the polled
descriptors was ready to read.

	But this could lead to delays in polling when one of the mmaped fds was
closed and we would then not be notified when another, associated to it by
means of PERF_EVENT_IOC_SET_OUTPUT, had events available.

	Also refcount the mmaps associated by means of PERF_EVENT_IOC_SET_OUTPUT,
so that we can properly unmap a ring buffer to which all its file descriptors
had been closed, for longer running apps.

	It is all available on my tree:

git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git perf/fdarray.v2

	I kept the v3 for the series as I initially called it pollfd, but since the
class that grew out of it was named fdarray, thus the fdarray.v2 branch name.

	Please let me know if there are still any other problems, now back to
fixing up my last perf/core pull req wrt those external proggies problems.

- Arnaldo

[1] http://lkml.kernel.org/r/1409781604-16778-1-git-send-email-acme@kernel.org

Arnaldo Carvalho de Melo (14):
  perf evlist: Introduce perf_evlist__filter_pollfd method
  perf tests: Add test for perf_evlist__filter_pollfd()
  perf evlist: Monitor POLLERR and POLLHUP events too
  perf evlist: We need to poll all event file descriptors
  perf record: Filter out POLLHUP'ed file descriptors
  perf trace: Filter out POLLHUP'ed file descriptors
  perf evlist: Allow growing pollfd on add method
  perf tests: Add pollfd growing test
  perf kvm stat live: Use perf_evlist__add_pollfd() instead of local equivalent
  perf evlist: Introduce poll method for common code idiom
  tools lib api: Adopt fdarray class from perf's evlist
  perf evlist: Refcount mmaps
  tools lib fd array: Allow associating an integer cookie with each entry
  perf evlist: Unmap ring buffer when fd is nuked

 tools/lib/api/Makefile                    |   7 +-
 tools/lib/api/fd/array.c                  | 128 ++++++++++++++++++
 tools/lib/api/fd/array.h                  |  34 +++++
 tools/perf/Makefile.perf                  |   1 +
 tools/perf/builtin-kvm.c                  |  24 ++--
 tools/perf/builtin-record.c               |   5 +-
 tools/perf/builtin-top.c                  |   4 +-
 tools/perf/builtin-trace.c                |   3 +-
 tools/perf/tests/builtin-test.c           |   8 ++
 tools/perf/tests/evlist.c                 | 217 ++++++++++++++++++++++++++++++
 tools/perf/tests/open-syscall-tp-fields.c |   2 +-
 tools/perf/tests/perf-record.c            |   2 +-
 tools/perf/tests/task-exit.c              |   2 +-
 tools/perf/tests/tests.h                  |   2 +
 tools/perf/util/evlist.c                  |  77 +++++++++--
 tools/perf/util/evlist.h                  |  16 ++-
 tools/perf/util/python.c                  |   6 +-
 17 files changed, 499 insertions(+), 39 deletions(-)
 create mode 100644 tools/lib/api/fd/array.c
 create mode 100644 tools/lib/api/fd/array.h
 create mode 100644 tools/perf/tests/evlist.c

-- 
1.9.3


^ permalink raw reply	[flat|nested] 48+ messages in thread
* [GIT PULL 00/14] perf tools polling fixes
@ 2014-09-25 21:57 Arnaldo Carvalho de Melo
  2014-09-25 21:57 ` [PATCH 01/14] perf evlist: Introduce perf_evlist__filter_pollfd method Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 48+ messages in thread
From: Arnaldo Carvalho de Melo @ 2014-09-25 21:57 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Borislav Petkov, Corey Ashford, David Ahern, Don Zickus,
	Frederic Weisbecker, Jean Pihet, Jiri Olsa, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling into tip/perf/core.

Best Regards,

- Arnaldo

The following changes since commit 521e8bac67a71a6544274f39d5c61473e0e54ac0:

  perf/x86/intel/uncore: Update support for client uncore IMC PMU (2014-09-24 14:48:25 +0200)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-fdarray-for-mingo

for you to fetch changes up to 46fb3c21d20415dd2693570c33d0ea6eb8745e04:

  perf trace: Filter out POLLHUP'ed file descriptors (2014-09-25 16:46:56 -0300)

----------------------------------------------------------------
Infrastructure:

We were not handling POLLHUP notifications for event file descriptors.

Fix it by filtering entries in the events file descriptor array after
poll returns, refcounting mmaps so that when the last fd pointing to
a perf mmap goes away we do the unmap.

User visible:

Now 'record' and 'trace' properly exit when a target thread exits.

Arnaldo Carvalho de Melo (14):
  perf evlist: Introduce perf_evlist__filter_pollfd method
  perf tests: Add test for perf_evlist__filter_pollfd()
  perf evlist: Monitor POLLERR and POLLHUP events too
  perf evlist: We need to poll all event file descriptors
  perf evlist: Allow growing pollfd on add method
  perf tests: Add pollfd growing test
  perf kvm stat live: Use perf_evlist__add_pollfd() instead of local equivalent
  perf evlist: Introduce poll method for common code idiom
  tools lib api: Adopt fdarray class from perf's evlist
  perf evlist: Refcount mmaps
  tools lib fd array: Allow associating an integer cookie with each entry
  perf evlist: Unmap when all refcounts to fd are gone and events drained
  perf record: Filter out POLLHUP'ed file descriptors
  perf trace: Filter out POLLHUP'ed file descriptors

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (14):
      perf evlist: Introduce perf_evlist__filter_pollfd method
      perf tests: Add test for perf_evlist__filter_pollfd()
      perf evlist: Monitor POLLERR and POLLHUP events too
      perf evlist: We need to poll all event file descriptors
      perf evlist: Allow growing pollfd on add method
      perf tests: Add pollfd growing test
      perf kvm stat live: Use perf_evlist__add_pollfd() instead of local equivalent
      perf evlist: Introduce poll method for common code idiom
      tools lib api: Adopt fdarray class from perf's evlist
      perf evlist: Refcount mmaps
      tools lib fd array: Allow associating an integer cookie with each entry
      perf evlist: Unmap when all refcounts to fd are gone and events drained
      perf record: Filter out POLLHUP'ed file descriptors
      perf trace: Filter out POLLHUP'ed file descriptors

 tools/lib/api/Makefile                    |   7 +-
 tools/lib/api/fd/array.c                  | 127 ++++++++++++++++++++++
 tools/lib/api/fd/array.h                  |  46 ++++++++
 tools/perf/Makefile.perf                  |   3 +-
 tools/perf/builtin-kvm.c                  |  24 ++---
 tools/perf/builtin-record.c               |   9 +-
 tools/perf/builtin-top.c                  |   4 +-
 tools/perf/builtin-trace.c                |   7 +-
 tools/perf/tests/builtin-test.c           |   8 ++
 tools/perf/tests/fdarray.c                | 174 ++++++++++++++++++++++++++++++
 tools/perf/tests/open-syscall-tp-fields.c |   2 +-
 tools/perf/tests/perf-record.c            |   2 +-
 tools/perf/tests/task-exit.c              |   2 +-
 tools/perf/tests/tests.h                  |   2 +
 tools/perf/util/evlist.c                  | 105 +++++++++++++++---
 tools/perf/util/evlist.h                  |  16 ++-
 tools/perf/util/python.c                  |   6 +-
 17 files changed, 501 insertions(+), 43 deletions(-)
 create mode 100644 tools/lib/api/fd/array.c
 create mode 100644 tools/lib/api/fd/array.h
 create mode 100644 tools/perf/tests/fdarray.c

^ permalink raw reply	[flat|nested] 48+ messages in thread

end of thread, other threads:[~2014-09-25 21:58 UTC | newest]

Thread overview: 48+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-10 14:08 [RFC 00/14] perf pollfd v3 Arnaldo Carvalho de Melo
2014-09-10 14:08 ` [PATCH 01/14] perf evlist: Introduce perf_evlist__filter_pollfd method Arnaldo Carvalho de Melo
2014-09-10 14:08 ` [PATCH 02/14] perf tests: Add test for perf_evlist__filter_pollfd() Arnaldo Carvalho de Melo
2014-09-10 14:08 ` [PATCH 03/14] perf evlist: Monitor POLLERR and POLLHUP events too Arnaldo Carvalho de Melo
2014-09-10 14:08 ` [PATCH 04/14] perf evlist: We need to poll all event file descriptors Arnaldo Carvalho de Melo
2014-09-10 14:08 ` [PATCH 05/14] perf record: Filter out POLLHUP'ed " Arnaldo Carvalho de Melo
2014-09-10 14:08 ` [PATCH 06/14] perf trace: " Arnaldo Carvalho de Melo
2014-09-10 14:08 ` [PATCH 07/14] perf evlist: Allow growing pollfd on add method Arnaldo Carvalho de Melo
2014-09-10 14:08 ` [PATCH 08/14] perf tests: Add pollfd growing test Arnaldo Carvalho de Melo
2014-09-10 14:08 ` [PATCH 09/14] perf kvm stat live: Use perf_evlist__add_pollfd() instead of local equivalent Arnaldo Carvalho de Melo
2014-09-10 14:08 ` [PATCH 10/14] perf evlist: Introduce poll method for common code idiom Arnaldo Carvalho de Melo
2014-09-10 14:08 ` [PATCH 11/14] tools lib api: Adopt fdarray class from perf's evlist Arnaldo Carvalho de Melo
2014-09-11 15:09   ` [PATCH] tools lib fd array: Do not set fd as non blocking evlist Jiri Olsa
2014-09-11 15:27     ` Arnaldo Carvalho de Melo
2014-09-11 15:53       ` Arnaldo Carvalho de Melo
2014-09-12 12:58   ` [PATCH 11/14] tools lib api: Adopt fdarray class from perf's evlist Jiri Olsa
2014-09-12 13:44     ` Arnaldo Carvalho de Melo
2014-09-12 14:16       ` Jiri Olsa
2014-09-12 14:22         ` Arnaldo Carvalho de Melo
2014-09-12 16:54           ` Borislav Petkov
2014-09-12 20:48             ` Arnaldo Carvalho de Melo
2014-09-12 22:12               ` Borislav Petkov
2014-09-22 12:29   ` Jiri Olsa
2014-09-10 14:08 ` [PATCH 12/14] perf evlist: Refcount mmaps Arnaldo Carvalho de Melo
2014-09-10 14:08 ` [PATCH 13/14] tools lib fd array: Allow associating an integer cookie with each entry Arnaldo Carvalho de Melo
2014-09-11 10:33   ` Jiri Olsa
2014-09-11 13:29     ` Arnaldo Carvalho de Melo
2014-09-11 14:59       ` Jiri Olsa
2014-09-11 15:23         ` Arnaldo Carvalho de Melo
2014-09-11 15:35           ` Jiri Olsa
2014-09-11 15:49             ` Arnaldo Carvalho de Melo
2014-09-11 16:07               ` Jiri Olsa
2014-09-10 14:08 ` [PATCH 14/14] perf evlist: Unmap ring buffer when fd is nuked Arnaldo Carvalho de Melo
2014-09-11 12:27   ` Jiri Olsa
2014-09-11 13:40     ` Arnaldo Carvalho de Melo
2014-09-11 11:33 ` [RFC 00/14] perf pollfd v3 Jiri Olsa
2014-09-11 11:48   ` Jiri Olsa
2014-09-11 13:30     ` Arnaldo Carvalho de Melo
2014-09-11 21:36       ` Arnaldo Carvalho de Melo
2014-09-18 16:04         ` Arnaldo Carvalho de Melo
2014-09-22 13:35           ` Jiri Olsa
2014-09-22 14:49             ` Arnaldo Carvalho de Melo
2014-09-22 14:51               ` Jiri Olsa
2014-09-22 21:10                 ` Arnaldo Carvalho de Melo
2014-09-23  9:26                   ` Jiri Olsa
2014-09-23 12:46                     ` Arnaldo Carvalho de Melo
2014-09-23 12:52                       ` Jiri Olsa
  -- strict thread matches above, loose matches on Subject: below --
2014-09-25 21:57 [GIT PULL 00/14] perf tools polling fixes Arnaldo Carvalho de Melo
2014-09-25 21:57 ` [PATCH 01/14] perf evlist: Introduce perf_evlist__filter_pollfd method Arnaldo Carvalho de Melo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.