LSTOWN-L Archives

LISTSERV List Owners' Forum

LSTOWN-L

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Topic: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
"David M. Rosenberg" <[log in to unmask]>
Sat, 9 Sep 2000 18:11:34 EDT
text/plain (117 lines)
How does "passive probe" REALLY decide who to probe?

I feel that I need to understand (more thoroughly than I currently do)
how the "passive probe" feature selects which subscribers will be
passively probed on a particular mailing.

In the following description assume that the passive probe parameter is
d (days), the list has s subscribers and the number of unique messages
distributed through the list will average m messages per day for the
next d days.

Say that I use the keyword

* Auto-Delete= Yes,Semi-Auto,Probe(d)

I think that that is instructing LISTSERV to send a passive probe to
each subscriber once every d days and to distribute those probes as
evenly as possible across the messages distributed in the next d days.

LISTSERV can't know in advance how many unique messages will be
distributed in the next d days, so it doesn't really have enough
information to distribute the probes evenly across the messages.

LISTSERV could keep statistics of recent list traffic and use that to
anticipate probable future list traffic. I assume that it doesn't
actually use the statistics to decide how to process passive probes.
(Does it? What if the header for that list didn't enable the collection
of statistics?)

In order to understand how LISTSERV handles passive probes, I first
tried to think what it could possibly do. While thinking about the
algorithms that could be used, there were several design choices:
a. Which is more important, probing each subscriber once every d days
   or not sending more than s/(d*m) passive probes per message?
b. Should we use fixed "d consecutive day" cycles (with a definite end
   to one cycle and start to the next cycle) or should we have a moving
   d day window?

I thought that it was more important to probe each subscriber once every
d days than to avoid sending more than s/(d*m) passive probes per
message. (Particularly since m can't really be known.) I even felt it
was more important to probe each subscriber once every d days than to
avoid sending more than s/d passive probes per day. Which goal did
L-Soft consider to be the higher priority in their design?

While a moving d day window offered some definite attractions, I ended
up using a combination of a moving d day window (to catch subscribers
who hadn't been passively probed in the last d days) and a fixed "d
consecutive day" cycle (to try to spread out the probes and avoid
clumping). Which choice did L-Soft make?

I'll describe one algorithm that I might have used (if I were the
responsible L-Soft programmer) to decide which messages to make passive
probes. I'd appreciate someone from L-Soft telling me what LISTSERV
actually does, in about the same level of detail.

1. Associate a "last passively probed" date/timestamp with each
subscriber. When passive probing is first turned on, or when the value
of "d" is reduced, set each of the subscriber's "last passively probed"
date/timestamp to date/times uniformly distributed across the last d
days. That is, assign each subscriber a number i where i is in the range
1 <= i <= s and set each subscriber's "last passively probed"
date/timestamp to (d - i*d/s) days ago, where d is the number of days in
the passive probe cycle, i is the ordinal number assigned to that
subscriber, and s is the number of subscribers. When the value of "d" is
increased, don't change subscriber's "last passively probed"
date/timestamps.

2. When a new subscriber joins the list, set his "last passively probed"
date/timestamp to the time he joined.

3. Start the clock for a d day cycle at a specific date, hour, minute
and second. Keep the date/timestamp of when this cycle started. Start
the next cycle exactly d days later.

4. When a message is about to be processed, if any of the recipients
haven't been passively probed in the last d days, passively probe them
with this mailing and update their "last passively probed"
date/timestamps to the current date/time. These recipients will
DEFINITELY be passively probed on this message. Nothing in the following
parts of the algorithm can change that.

5. When a message is about to be processed, compute what fraction of the
current d day cycle has already elapsed. The same fraction of the
subscribers should have been passively probed since the beginning of
this cycle.

6. If that number (or more) of subscribers have been passively probed
during this cycle, don't do any more passive probing on this message.

7. If fewer than that number of subscribers have been passively probed
during this cycle, determine the number of additional subscribers that
would need to be passively probed to make the fraction of the
subscribers already passively probed equal to the fraction of the
probing cycle which has already elapsed. Use this number as the target
number of subscribers to receive this message as a passive probe.

8. Sort the recipients of the current message by their "last passively
probed" date/timestamps. Select up to the target number of them with the
earliest "last passively probed" date/timestamps. Passively probe them
with this mailing and update their "last passively probed"
date/timestamps to the current date/time.

9. If there are more than the target number of recipients of the current
message, some will be passively probed and some will not.

10. If there are less than (or equal to) the target number of recipients
of the current message, all those recipients will be passively probed.

So my request is: please describe the way that passive probing really
selects which subscribers will be passively probed on a particular
mailing (in about the same level of detail that I used above).

Thanks.

/David Rosenberg            [log in to unmask]            1-617-253-8054

ATOM RSS1 RSS2