Messages in this thread | | | Date | Thu, 29 May 2014 11:01:25 +0200 | From | Jiri Olsa <> | Subject | Re: [PATCH 06/14] perf tools: Cache dso data file descriptor |
| |
On Thu, May 29, 2014 at 09:02:36AM +0900, Namhyung Kim wrote: > On Tue, 27 May 2014 09:37:38 +0200, Jiri Olsa wrote: > > On Tue, May 27, 2014 at 10:05:28AM +0900, Namhyung Kim wrote: > >> Hi Jiri, > >> > >> On Thu, 15 May 2014 19:23:27 +0200, Jiri Olsa wrote: > >> > >> [SNIP] > >> > +static void data_close(void) > >> > +{ > >> > + bool cache_fd = may_cache_fd(); > >> > + > >> > + if (!cache_fd) > >> > + close_first_dso(); > >> > +} > >> > >> Why do you do this at close()? As long as there's no attempt to open a > >> new file, we can keep existing fd, no? > > > > so the way it works now is: > > > > - we keep up to the 'RLIMIT_NOFILE / 2' of open dso objects > > - if we try to open dso and it fails, because we are out of > > file descriptors, we close dso objects and try to reopen > > (check do_open function) > > - when we close the dso object we check if number of opened > > dso objects is below 'RLIMIT_NOFILE / 2'.. if it is, we keep > > the dso opened, if not we close first dso in the list > > > > util/dso.h tries to describe that > > Yes, I know. But my question is why do this at close()? Isn't it > sufficient to check the file limit at open() and close previous one if > necessary?
hm, it's still the same operation to be done either in open or in close.. but we would not need dso__data_close then.. ok, I'll make the change ;-)
thanks, jirka
| |