Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751993AbbBRMmm (ORCPT ); Wed, 18 Feb 2015 07:42:42 -0500 Received: from relay.parallels.com ([195.214.232.42]:40694 "EHLO relay.parallels.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751213AbbBRMmk (ORCPT ); Wed, 18 Feb 2015 07:42:40 -0500 Date: Wed, 18 Feb 2015 15:42:11 +0300 From: Andrew Vagin To: Arnd Bergmann CC: Andrey Vagin , , , Oleg Nesterov , Andrew Morton , Cyrill Gorcunov , "Pavel Emelyanov" , Roger Luethi Subject: Re: [PATCH 0/7] [RFC] kernel: add a netlink interface to get information about processes Message-ID: <20150218123659.GA24098@paralelels.com> References: <1424161226-15176-1-git-send-email-avagin@openvz.org> <3238376.TxgiSSEfbZ@wuerfel> <20150217213313.GB7091@paralelels.com> <2631974.u59Ona1mDt@wuerfel> MIME-Version: 1.0 Content-Type: text/plain; charset="koi8-r" Content-Disposition: inline In-Reply-To: <2631974.u59Ona1mDt@wuerfel> User-Agent: Mutt/1.5.23 (2014-03-12) X-Originating-IP: [10.24.37.236] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3139 Lines: 87 On Wed, Feb 18, 2015 at 12:06:40PM +0100, Arnd Bergmann wrote: > On Wednesday 18 February 2015 00:33:13 Andrew Vagin wrote: > > On Tue, Feb 17, 2015 at 09:53:09AM +0100, Arnd Bergmann wrote: > > > On Tuesday 17 February 2015 11:20:19 Andrey Vagin wrote: > > > > task_diag is based on netlink sockets and looks like socket-diag, which > > > > is used to get information about sockets. > > > > > > > > A request is described by the task_diag_pid structure: > > > > > > > > struct task_diag_pid { > > > > __u64 show_flags; /* specify which information are required */ > > > > __u64 dump_stratagy; /* specify a group of processes */ > > > > > > > > __u32 pid; > > > > }; > > > > > > Can you explain how the interface relates to the 'taskstats' genetlink > > > API? Did you consider extending that interface to provide the > > > information you need instead of basing on the socket-diag? > > > > It isn't based on the socket-diag, it looks like socket-diag. > > > > Current task_diag registers a new genl family, but we can use the taskstats > > family and add task_diag commands to it. > > What I meant was more along the lines of making it look like taskstats > by adding new fields to 'struct taskstat' for what you want return. > I don't know if that is possible or a good idea for the information > you want to get out of the kernel, but it seems like a more natural > interface, as it already has some of the same data (comm, gid, pid, > ppid, ...). Now I see what you mean. task_diag has more flexible and universal interface than taskstat. A response of taskstat only contains a taskstats structure. A response of taskdiag can contains a few types of properties. Each type is described by its own structure. Curently here are only two groups of parameters: task_diag_msg and task_diag_creds. task_diag_msg contains a few basic parameters. task_diag_creds contains credentials. I'm going to add other groups to describe all kind of task properties which currently are presented in procfs (e.g. /proc/pid/maps, /proc/pid/fding/*, /proc/pid/status, etc). One of features of task_diag is an ability to choose which information are required. This allows to minimize a response size and a time, which is requred to fill this response. struct task_diag_msg { __u32 tgid; __u32 pid; __u32 ppid; __u32 tpid; __u32 sid; __u32 pgid; __u8 state; char comm[TASK_DIAG_COMM_LEN]; }; struct task_diag_creds { struct task_diag_caps cap_inheritable; struct task_diag_caps cap_permitted; struct task_diag_caps cap_effective; struct task_diag_caps cap_bset; __u32 uid; __u32 euid; __u32 suid; __u32 fsuid; __u32 gid; __u32 egid; __u32 sgid; __u32 fsgid; }; Thanks, Andrew > > Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/