> I agree that Call-by-string-name dynamically evaluated invocations are
> expensive and not good as you said.
> (1) It should be possible to refer a PAGG object from some critical
> sections. (2) It should be light-weight to refer a PAGG object for
> each customer. IMO, these should be fixed for PAGG to be widely-supported.
> I want a comment by Erik Jacobson.
Sorry for the delay. I was on vacation.
For (1) - can you give some examples?
For (2) - If you look at the exec hook __pagg_exec function, we go through
the list of paggs for the task that reached the hook, and we execute the
associated function pointer (if it is assigned in the pagg hook). When we
execute the associated exec function pointer, we pass a reference to the pagg
in question.
pagg_get I suppose is a tiny bit expensive but it only gets bad when there
are lots of pagg associations for a given task. I assume this is your
concern for (2) though, right?
If we were to change this, what would you suggest? Recall that there is
a data pointer in the pagg structure that kernel module "customers" can
store stuff in on a per-task basis. One could envision look-up tables
or something, but that seems only a little less expensive and more
complicated.
We're of course open to ideas and suggestions. Thank you.
--
Erik Jacobson - Linux System Software - Silicon Graphics - Eagan, Minnesota
|