On Wed, Jun 14, 2017 at 6:28 PM, Justin Pryzby <pry...@telsasoft.com> wrote:
> On Tue, Jun 13, 2017 at 12:16:00PM -0400, Robert Haas wrote:
>> It might be worth adding platform-specific code for common platforms.
>
> All I care (which linux happily/happens to support) is maxrss; I was probably
> originally interested in this while digging into an issue with hash agg.
>
> I think it's fine to show zeros for unsupported fields; that's what 
> getusage(2)
> and time(1) do after all.

Meh.  I think if we're going to go to the trouble of customizing this
code by platform, we ought to get rid of values that are meaningless
on that platform.

>> it would be a good idea to install code specific to Linux that
>> displays all and only those values that are meaningful on Linux, and
>> (less importantly) similarly for macOS.  Linux is such a common
>> platform that reporting bogus zero values and omitting other fields
>> that are actually meaningful does not seem like a very good plan.
>
> That has the issue that it varies not just by OS but also by OS version.  For
> example PG already shows context switches and FS in/out puts, but they're
> nonzero only since linux 2.6 (yes, 2.4 is ancient and unsupported but still).
>
>        ru_nvcsw (since Linux 2.6)
>        ru_inblock (since Linux 2.6.22)

If people who are still running 10 or 15 year old versions of Linux
see some zeroes for fields that might've been populated on a newer
release, I'm OK with that.  Maybe it will encourage them to upgrade.
We've completely removed platform support for systems newer than that.

> ..and other fields are "currently unused", but maybe supported in the past or
> future(?)
>        ru_ixrss (unmaintained)
>               This field is currently unused on Linux.

Could be worth a bit of research here.

> Are you thinking of something like this, maybe hidden away in a separate file
> somewhere?
>
> #if defined(__linux__) || defined(BSD)
>         appendStringInfo(&str, "!\t%ld max resident, %ld shared, %ld unshared 
> data, %ld unshared stack (kB)\n", r.ru_maxrss, r.ru_ixrss, r.ru_idrss, 
> r.ru_isrss);
> #elif defined(__darwin__)
>         appendStringInfo(&str, "!\t%ld max resident, %ld shared, %ld unshared 
> data, %ld unshared stack (kB)\n", r.ru_maxrss/1024, r.ru_ixrss/1024, 
> r.ru_idrss/1024, r.ru_isrss/1024);
> #endif /* __linux__ */

I don't think it needs to go in a separate file.  I'd just patch ShowUsage().

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to