Re: Workload

From: Alex Rousskov (rousskov@measurement-factory.com)
Date: Sun Sep 14 2003 - 15:05:11 MDT


On Sun, 14 Sep 2003, Frederico Vaz wrote:

> I am creating a workload that had 60% of recurrence.
>
> 1) Why the real recorrence is in 76%?

Did you ignore indirect references? That is, when calculating actual
recurrence ratio, did you ignore requests to embedded objects?
Polygraph robots will fetch embedded [images] every time they request
an [HTML] container. Recurrence knob is for directly accessed objects
only.

Please email relevant PGL code if you are still stuck. Polygraph
usually honors recurrence settings. How do you measure actual
recurrence?

> 2) How I make so that the recurrence is different enters the types
> of contentes?
>
> Image = 70% ?
> HTML = 40% ?
> Download = 20% ?

Good question. Recurrence is defined on per-robot basis. Thus, it is
possible to achieve the above using three kinds of robots, each
accessing a given content type with the required recurrence ratio.
Note that different robots can be bound to the same address so their
traffic will not be distinguishable from traffic of a single robot
accessing all content types.

On the server side, you will need to define three servers, each
serving appropriate content. This is required because a robot accesses
all content of a server listed in its origins field. You cannot tell
robot to access just one content type on a given server. However, it
is probably easy to trick Polygraph into using one server agent on the
server side and three server configurations on the client side. PGL
code below illustrates what is needed:

        // actual server
        Server S = {
                ...
                content = [ cntHtml, cntImage, cntDownload ];
                direct_access = undef(); // Polygraph will use default
        };
        use(S);

        // fake servers
        Server S1 = S;
        S1.content = [ cntHtml ];
        // do not use() S1

        Server S2 = S;
        S2.content = [ cntImage ];
        // do not use() S2

        Server S3 = S;
        S3.content = [ cntDownload ];
        // do not use() S3

        Robot R = { ... }; // common robot properties
        // do not use() R

        Robot R1 = R;
        R1.recurrence = 40%;
        R1.origins = S1.addresses;
        use(R1);

        Robot R2 = R;
        R2.recurrence = 70%;
        R2.origins = S2.addresses;
        use(R2);

        Robot R3 = R;
        R3.recurrence = 20%;
        R3.origins = S3.addresses;
        use(R3);

Note that the above assumes no embedded objects. This is not true for
default HTML and Image content definitions. If you want to use
embedded objects, you have to figure out how they will affect
recurrence ratios and adjust HTML/Image recurrence accordingly. Just
remember that Polygraph robots will fetch embedded [images] every time
they request an [HTML] container. This makes image recurrence
dependent, in part, on HTML recurrence (naturally). Note that you can
have the same content type being accessed directly and indirectly,
just like in real life.

If you use domain names rather than raw IP addresses, adjust
"R*.origins = S*.addresses" accordingly (I would use three Address
Maps in this case, one for each fake server in that case).

Finally, it is possible to add Polygraph code to be able to specify
what you want directly, without using fake servers. Something along
these lines:

        Robot R = {
                ...
                recurrence = [ cntHtml: 70%, cntImage: 40% ];
        };

or add recurrence field to the Content type itself, with some
algorithm to resolve conflicts between Robot.recurrence and
Content.recurrence. This would not be trivial, and this is a
performance-sensitive area of Robot implementation. Let me know if you
are interested in writing or sponsoring this code.

HTH,

Alex.

-- 
                            | HTTP performance - Web Polygraph benchmark
www.measurement-factory.com | HTTP compliance+ - Co-Advisor test suite
                            | all of the above - PolyBox appliance



This archive was generated by hypermail 2b29 : Mon Feb 06 2006 - 12:00:27 MST