Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1740117 > unrolled thread
| Started by | Alexey Dobriyan <adobriyan@gmail.com> |
|---|---|
| First post | 2017-09-26 20:50 +0200 |
| Last post | 2017-09-27 17:10 +0200 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [PATCH v2 2/2] pidmap(2) Alexey Dobriyan <adobriyan@gmail.com> - 2017-09-26 20:50 +0200
Re: [PATCH v2 2/2] pidmap(2) Andy Lutomirski <luto@amacapital.net> - 2017-09-27 17:10 +0200
| From | Alexey Dobriyan <adobriyan@gmail.com> |
|---|---|
| Date | 2017-09-26 20:50 +0200 |
| Subject | Re: [PATCH v2 2/2] pidmap(2) |
| Message-ID | <uu35E-8ph-15@gated-at.bofh.it> |
On Sun, Sep 24, 2017 at 02:27:00PM -0700, Andy Lutomirski wrote: > On Sun, Sep 24, 2017 at 1:08 PM, Alexey Dobriyan <adobriyan@gmail.com> wrote: > > From: Tatsiana Brouka <Tatsiana_Brouka@epam.com> > > > > Implement system call for bulk retrieveing of pids in binary form. > > > > Using /proc is slower than necessary: 3 syscalls + another 3 for each thread + > > converting with atoi() + instantiating dentries and inodes. > > > > /proc may be not mounted especially in containers. Natural extension of > > hidepid=2 efforts is to not mount /proc at all. > > > > It could be used by programs like ps, top or CRIU. Speed increase will > > become more drastic once combined with bulk retrieval of process statistics. > > > > Benchmark: > > > > N=1<<16 times > > ~130 processes (~250 task_structs) on a regular desktop system > > opendir + readdir + closedir /proc + the same for every /proc/$PID/task > > (roughly what htop(1) does) vs pidmap > > > > /proc 16.80 ± 0.73% > > pidmap 0.06 ± 0.31% > > > > PIDMAP_* flags are modelled after /proc/task_diag patchset. > > > > > > PIDMAP(2) Linux Programmer's Manual PIDMAP(2) > > > > NAME > > pidmap - get allocated PIDs > > > > SYNOPSIS > > long pidmap(pid_t pid, int *pids, unsigned int count , unsigned int start, int flags); > > I think we will seriously regret a syscall that does this. Djalal is > working on fixing the turd that is hidepid, and this syscall is > basically incompatible with ever fixing hidepids. I think that, to > make it less regrettable, it needs to take an fd to a proc mount as a > parameter. This makes me wonder why it's a syscall at all -- why not > just create a new file like /proc/pids? See reply to fdmap(2). pidmap(2) is indeed more complex case exactly because of pid/tgid/tid/everything else + pidnamespaces + ->hide_pid. However the problem remains: query task tree without all the bullshit. C/R people succumbed with /proc/*/children, it was a mistake IMO.
[toc] | [next] | [standalone]
| From | Andy Lutomirski <luto@amacapital.net> |
|---|---|
| Date | 2017-09-27 17:10 +0200 |
| Message-ID | <uum8i-4P4-27@gated-at.bofh.it> |
| In reply to | #1740117 |
On Tue, Sep 26, 2017 at 11:46 AM, Alexey Dobriyan <adobriyan@gmail.com> wrote: > On Sun, Sep 24, 2017 at 02:27:00PM -0700, Andy Lutomirski wrote: >> On Sun, Sep 24, 2017 at 1:08 PM, Alexey Dobriyan <adobriyan@gmail.com> wrote: >> > From: Tatsiana Brouka <Tatsiana_Brouka@epam.com> >> > >> > Implement system call for bulk retrieveing of pids in binary form. >> > >> > Using /proc is slower than necessary: 3 syscalls + another 3 for each thread + >> > converting with atoi() + instantiating dentries and inodes. >> > >> > /proc may be not mounted especially in containers. Natural extension of >> > hidepid=2 efforts is to not mount /proc at all. >> > >> > It could be used by programs like ps, top or CRIU. Speed increase will >> > become more drastic once combined with bulk retrieval of process statistics. >> > >> > Benchmark: >> > >> > N=1<<16 times >> > ~130 processes (~250 task_structs) on a regular desktop system >> > opendir + readdir + closedir /proc + the same for every /proc/$PID/task >> > (roughly what htop(1) does) vs pidmap >> > >> > /proc 16.80 ą 0.73% >> > pidmap 0.06 ą 0.31% >> > >> > PIDMAP_* flags are modelled after /proc/task_diag patchset. >> > >> > >> > PIDMAP(2) Linux Programmer's Manual PIDMAP(2) >> > >> > NAME >> > pidmap - get allocated PIDs >> > >> > SYNOPSIS >> > long pidmap(pid_t pid, int *pids, unsigned int count , unsigned int start, int flags); >> >> I think we will seriously regret a syscall that does this. Djalal is >> working on fixing the turd that is hidepid, and this syscall is >> basically incompatible with ever fixing hidepids. I think that, to >> make it less regrettable, it needs to take an fd to a proc mount as a >> parameter. This makes me wonder why it's a syscall at all -- why not >> just create a new file like /proc/pids? > > See reply to fdmap(2). > > pidmap(2) is indeed more complex case exactly because of > pid/tgid/tid/everything else + pidnamespaces + ->hide_pid. > However the problem remains: query task tree without all the bullshit. > C/R people succumbed with /proc/*/children, it was a mistake IMO. Your syscall cannot be implemented sanely. It doesn't remove bullshit -- it adds bullshit. NAK.
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web