2001-11-05 06:40:30

by Xiaoliang (David) Wei

[permalink] [raw]
Subject: How can I know the number of current users in the system?

Hi every one,
I have a problem not clear: Is there any counter for the user number
in linux?
I want to do anexperiment which will get the number of current user in
the system and try fair-share scheduling based on it. I read the sys.c
and user.c but cannot find a counter for it. Is there any counter for
this things?

If no, where can I put the inc instruct and dec instruct or the
counter? in the uid_hash_insert and uid_hash_remove?
Thank you!
-----------------------------------------------------------------------
Xiaoliang (David) Wei Graduate Student in CS, Caltech
E-mail: [email protected] Office: 158 Jorgensen
Phone: 1-(626)-395-3555 (O) 1-(626)-577-5238 (H)
Mail: Xiaoliang Wei, 256-80 Caltech, Pasadena, CA 91125, U.S.A.
WWW: http://www.cs.caltech.edu/~weixl http://166.111.69.241/~wxl
-----------------------------------------------------------------------


2001-11-05 18:09:55

by Riley Williams

[permalink] [raw]
Subject: Re: How can I know the number of current users in the system?

Hi Wei.

> I have a problem not clear: Is there any counter for the user number
> in linux?

> I want to do anexperiment which will get the number of current user
> in the system and try fair-share scheduling based on it. I read the
> sys.c and user.c but cannot find a counter for it. Is there any
> counter for this things?

Here's a simple shell command to provide that information:

who | wc -l

Try it and see...

Best wishes from Riley.

2001-11-06 01:21:35

by Chris Abbey

[permalink] [raw]
Subject: Re: How can I know the number of current users in the system?

Today, Riley Williams wrote:
> Here's a simple shell command to provide that information:
>
> who | wc -l
>
> Try it and see...

Actually that's not a fair count of the number of users on the box,
only the number that are *logged in*. On one of our boxes at work,
that would miss about 80% of the users, maybe more. Anyone that
RSH's or SSH's in without a tty wouldn't be counted:

cabbey@CHESIRE ~> ssh -T tweedle who
cabbey@CHESIRE ~>

so even though I was executing who on tweedle it didn't see me
logged in. A more realistic situation:

[cabbey@tweedle cabbey]$ who
cabbey pts/0 Nov 5 19:05
cabbey pts/1 Nov 5 19:05
[cabbey@tweedle cabbey]$

pts/0 is my pine session, pts/1 is the shell I executed who in,
there are also two copies of "xeyes" running back to chesire
that were started as 'ssh -T tweedle /usr/X11r6/bin/xeyes -display
chesire:0' but don't appear in who

going back to running it remotely:

cabbey@CHESIRE ~> ssh -T tweedle who
cabbey pts/0 Nov 5 19:05
cabbey pts/1 Nov 5 19:05
cabbey@CHESIRE ~>

If those were move cpu hungry programs than xeyes,
like vncserver with a complete kde/gnome desktop
running under it then you could really be missing
some data from a scheduling pov... which as I recall
was what the original poster wanted to fiddle with.

--
now the forces of openness have a powerful and
unexpected new ally - http://ibm.com/linux


2001-11-06 09:52:05

by Terje Eggestad

[permalink] [raw]
Subject: Re: How can I know the number of current users in the system?

The short answer is; No.

The slightly longer answer is that Linux/Unix kernels don't have a
consept of a logged in user. userids are used for really only one thing,
owner ship of data. In order to do enforce it a process must be running
as a spesific user. Once programs had a userid attached to it, things
rolled on from there. However there is no way of figuring out if a
process is "online" or something else.

However, the big iron *ix'es do this, and I can't remember exactly how
they do it. But another feature often pop up; guaranteeing a users a
minimum CPU percentage. (Even if I hate it, it has merit for RT/responce
critical apps.)

My suggestion is to loop thru the processes and collect a list of all
the userids and form a tree/list of all the processes belonging to each
of them. Then you fair share schedule between the users.

Another issue: did you want to serialize scheduling? (run all the
processes for a user in sequence before starting on the next user?)
Another feature on the "big" *ix'es.

THis is going to have some side effects! nicing a process up or down may
only nice relative to the users other processes, not other users. It may
be what you want, just thought I'd bring it up.

Next issue, do you want to fair share between root and the other users?
(and THAT is a time old discussion...)

TJ


s?n, 2001-11-04 kl. 23:15 skrev Wei Xiaoliang:
> Hi every one,
> I have a problem not clear: Is there any counter for the user number
> in linux?
> I want to do anexperiment which will get the number of current user in
> the system and try fair-share scheduling based on it. I read the sys.c
> and user.c but cannot find a counter for it. Is there any counter for
> this things?
>
> If no, where can I put the inc instruct and dec instruct or the
> counter? in the uid_hash_insert and uid_hash_remove?
> Thank you!
> -----------------------------------------------------------------------
> Xiaoliang (David) Wei Graduate Student in CS, Caltech
> E-mail: [email protected] Office: 158 Jorgensen
> Phone: 1-(626)-395-3555 (O) 1-(626)-577-5238 (H)
> Mail: Xiaoliang Wei, 256-80 Caltech, Pasadena, CA 91125, U.S.A.
> WWW: http://www.cs.caltech.edu/~weixl http://166.111.69.241/~wxl
> -----------------------------------------------------------------------
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
--
_________________________________________________________________________

Terje Eggestad [email protected]
Scali Scalable Linux Systems http://www.scali.com

Olaf Helsets Vei 6 tel: +47 22 62 89 61 (OFFICE)
P.O.Box 70 Bogerud +47 975 31 574 (MOBILE)
N-0621 Oslo fax: +47 22 62 89 51
NORWAY
_________________________________________________________________________

2001-11-06 12:21:56

by Dale Amon

[permalink] [raw]
Subject: Re: How can I know the number of current users in the system?

On Tue, Nov 06, 2001 at 10:28:57AM +0100, Terje Eggestad wrote:
>
> My suggestion is to loop thru the processes and collect a list of all
> the userids and form a tree/list of all the processes belonging to each
> of them. Then you fair share schedule between the users.

Hmmm, you should be able to count the number of pty's and tty's.
Every logged in user is attached to some sort of getty
whose parent is the init task (1). That might be a basis for
a count.

--
------------------------------------------------------
Nuke bin Laden: Dale Amon, CEO/MD
improve the global Islandone Society
gene pool. http://www.islandone.org
------------------------------------------------------

2001-11-06 12:55:46

by Nicholas Berry

[permalink] [raw]
Subject: Re: How can I know the number of current users in the system?

It depends whether you're looking for an idea of who's on, or you want a definitive count. The lattter is basically almost impossible. What if a logged-in user nohups two xterms to different X-servers, then logs out - how many people are logged in? I've spent a hell of a long time working on this on AIX for a certain German bank, and the bottom line is that it can't be done. What is 'logged on' anyway? Someone running bash or ksh, that's cool, but what about someone running /home/fred/myprog? Is it a shell?

Basically once Unix went beyond serial terminals connected to dumb serial ports, we lost the ability to track users.

Nik


> Hmmm, you should be able to count the number of pty's and tty's.
> Every logged in user is attached to some sort of getty
> whose parent is the init task (1). That might be a basis for
> a count.


2001-11-06 13:55:54

by Terje Eggestad

[permalink] [raw]
Subject: Re: How can I know the number of current users in the system?

Absolutly true.

You can get a 90% solution by testing for tty and for proces that has a
connection to a tcp port between 6000 and 6100 somewhere or has a unix
socket to /tmp/.X11-unix/X0 (or whereever X chooses to place the unix
socket).

But thats definitly not good enough to base your scheduling on.

TJ

tir, 2001-11-06 kl. 13:38 skrev Nicholas Berry:
It depends whether you're looking for an idea of who's on, or you want a definitive count. The lattter is basically almost impossible. What if a logged-in user nohups two xterms to different X-servers, then logs out - how many people are logged in? I've spent a hell of a long time working on this on AIX for a certain German bank, and the bottom line is that it can't be done. What is 'logged on' anyway? Someone running bash or ksh, that's cool, but what about someone running /home/fred/myprog? Is it a shell?

Basically once Unix went beyond serial terminals connected to dumb serial ports, we lost the ability to track users.

Nik


> Hmmm, you should be able to count the number of pty's and tty's.
> Every logged in user is attached to some sort of getty
> whose parent is the init task (1). That might be a basis for
> a count.

--
_________________________________________________________________________

Terje Eggestad [email protected]
Scali Scalable Linux Systems http://www.scali.com

Olaf Helsets Vei 6 tel: +47 22 62 89 61 (OFFICE)
P.O.Box 70 Bogerud +47 975 31 574 (MOBILE)
N-0621 Oslo fax: +47 22 62 89 51
NORWAY
_________________________________________________________________________

2001-11-06 14:55:37

by Telford002

[permalink] [raw]
Subject: Re: How can I know the number of current users in the system?

In a message dated 11/6/01 8:01:08 AM Eastern Standard Time,
[email protected] writes:

> Basically once Unix went beyond serial terminals connected to dumb serial
> ports, we lost the ability to track users.

I would have phrased the comment somewhat different.

Once Unix adopted the process and file I/O abstraction,
a system wide user count became meaningless.

Unix should be contrasted with Primos or VMS where the
user memory space or program and serial terminal I/O
are used in defining the multiuser time-sharing capabilities
of the system.

Joachim Martillo

2001-11-06 14:57:07

by Richard B. Johnson

[permalink] [raw]
Subject: Re: How can I know the number of current users in the system?

On 6 Nov 2001, Terje Eggestad wrote:

> Absolutly true.
>
> You can get a 90% solution by testing for tty and for proces that has a
> connection to a tcp port between 6000 and 6100 somewhere or has a unix
> socket to /tmp/.X11-unix/X0 (or whereever X chooses to place the unix
> socket).
>
> But thats definitly not good enough to base your scheduling on.
>
> TJ

If you don't mind having your Web-Server with 1000 connections/second
be a "single user", just scan for all the unique UID/GID pairs.
All the root processes are one "user", the lpd is another user,
Apache is another user, login-joe is another user, etc. The total
number of tasks is the number of directories that represent digits
in /proc.


Cheers,
Dick Johnson

Penguin : Linux version 2.4.1 on an i686 machine (799.53 BogoMips).

I was going to compile a list of innovations that could be
attributed to Microsoft. Once I realized that Ctrl-Alt-Del
was handled in the BIOS, I found that there aren't any.