I don't think I can help.

On Wed, 2004-09-22 at 10:07, [EMAIL PROTECTED] wrote:
> I see the problem of understanding it...
> Sending A, receiving A-ack and sending B are not realy sequential, it is
> like that just!!! in the first time, because, the server sends 'A-ack'
> just after it'll have 'A' messages in its queue so there is coupling
> between the server's 'A' messegase queue and the client's 'A-ack' queue,
> not between the client's 'A' messages and the client's 'A-ack' messages,
> they indifferent.
> Also between 'A-ack' and 'B'. 'A-ack' can be received from the server
> indifferently to the fact that the client sends 'B' and the sending 'B'
> is not dependent if 'A-ack' was just sent, it can deal with an 'A-ack'
> that was sent a hour ago.
> Lets take another example:
> 
> Thread1(loop)
>  |- a waiter puts food on the buffet table
>  |- Eitan takes food to eat
>  |- Eitan takes a toothpick
> 
> for the first time the process are sequential. Eitan will not be able to
> take food unless the waiter puts it there (he waits for the food).
> Eitan will not pick his teeth unless he ate something (took food from
> the table). but the processes are indifferent to each other: the waiter
> can continue to put food on the table even if Eitan didn't take some
> food from the table, of even if Eitan didn't pick his teath, Eitan can
> pick his teeth from flakes (I am sorry for this story) of food he took
> from the table two servings ago...
> 
> so it should be:
> Thread1(loop)
>  |- a waiter puts food on the buffet table
> 
> Thread2(loop)
> |- Eitan takes food to eat
> 
> Thread3(loop)
>  |- Eitan takes a toothpick
> 
> at first thread2 won't start till thread1 has started, and theard3 won't
> start till thread2 has started, but after that they are independent.
> 
> You wrote:
> > but a single thread is simulating a single client, and this is how clients work, 
> > no?  
> I don't think so, client can open several threads, the meaning of
> "clienting" is to connect to one server (a server can connect to several
> clients) and to connect to server that is already up (the server goes up
> first).
> > But add a second thread (second client), and now you have two 'message A' being 
> > sent
> > simultaneously.  Add 500 threads, and you'll have 500 parallel message A's.
> There is a big problem here, that called window size of 500, I won't
> elaborate (I know that you are a very busy man that need to develop,
> document and answering mails from annoying people like me...) but try to
> imagine that the waiter is waiting after each meal he put, for the
> customers to finish picking their teeth (sorry again), you as a manager
> probably won't hire 500 waiter to each wait for the picking, but you'll
> tell the waiter to keep put meals relentlessly (he would act like a
> seperate thread).
> 
> 
>   On Wed, 22 Sep 2004 08:21:13 -0400, "Michael Stover"
> <[EMAIL PROTECTED]> said:
> > I must be seriously misunderstanding something because, to me, it sounds
> > like you are describing a bunch of independent threads doing three
> > sequential steps, which is exactly how JMeter works.  See my comments
> > below:
> > 
> > On Wed, 2004-09-22 at 05:35, [EMAIL PROTECTED] wrote:
> > > I know that this mailing list is not meant for design, but if we already
> > > started...
> > > 
> > > I'm sorry, but I've to disagree. We're talking about client/server
> > > architecture, I'm a client and I want to send maximum load to the
> > > server.
> > > In one thread architecture it will look like that:
> > > 
> > > Thread(loop)
> > >  |- Send TCP/IP message (to server)
> > >  |
> > >  |- Wait for TCP/IP Ack message (from server)
> > 
> > Two sequential steps.
> > 
> > > 
> > > In an implementation like that, there will be a situation called 'window
> > > size = one', that means that the client can't send another message till
> > > it gets an ack message from the server (it can send just one message
> > > till the ack), and that reduces the load significantly (that's a fact),
> > > I don't want to wait for the Acks, I want to keep sending. 
> > 
> > You say you don't want to wait, but you contradict that below.  In fact,
> > it seems you have to wait.
> > 
> > > by decoupling those processes I can also elaborate things, like I
> > > described in the previous mail:
> > > 
> > > Thread1(loop)
> > >  |- Send message A
> > > 
> > > Thread2(loop)
> > >  |- Wait for Ack (save a special field - f1, push in shared Q)
> > > 
> > > Thread3(loop)
> > >  |- Send message B sometimes in the future (according to field f1 - pop
> > >  from shared Q)
> > 
> > Now you are describing three sequential steps, each dependent on the
> > previous step.  For some reason, you want to use three threads and make
> > them wait on one another (complicated) when a single thread will simply
> > work that way.
> > 
> > > 
> > > As you can see, I can't do it in one thread (I won't be able to send a
> > > second message A till the B message will be send
> > 
> > With a single thread, that's true, but a single thread is simulating a
> > single client, and this is how clients work, no?  But add a second
> > thread (second client), and now you have two 'message A' being sent
> > simultaneously.  Add 500 threads, and you'll have 500 parallel message
> > A's.
> > 
> > >  - sometime in the
> > > future). I want to send as much messages A in a second, as I can.
> > 
> > I would like to see how you would do it with 3 threads, and keep each
> > set of message A - Ack - message B together.  Certainly you can't do it
> > in JMeter even with some global variable storage.
> > 
> > -Mike
> > 
> > > 
> > > And now for the real problem, you wrote: "Variables are not shared
> > > across threads. JMeter simulates multiple independent users", That's
> > > okay, I want to simulate it myself. like the "User Defined Variables" in
> > > the Test Plan.
> > > 
> > > Can you write something on how it is done (ValueReplacer...)
> > > 
> > > Thanks a million
> > > 
> > > P.S
> > > I can always use global queue, but... you know
> > > 
> > > 
> > > 
> > > On Tue, 21 Sep 2004 11:16:29 -0400, "Michael Stover"
> > > <[EMAIL PROTECTED]> said:
> > > > That seems like exactly the sort of thing you'd do in one thread.  An
> > > > initial request gets some data and a subsequent request uses it.  How
> > > > else would you manage 100 threads doing this?
> > > > 
> > > > -Mike
> > > > 
> > > > On Tue, 2004-09-21 at 10:53, [EMAIL PROTECTED] wrote:
> > > > > Okay, so how can I do it?
> > > > > What I'm planing, is to use in one thread, a derived
> > > > > 'AbstractJavaSamplerClient' to get TCP/IP packet (a request) and to pars
> > > > > it. according to this request, another thread will send another request
> > > > > (let's say the ack part) - using other derived
> > > > > 'AbstractJavaSamplerClient' that will be under an 'IfController' (in the
> > > > > 'IfController' the user will "ask" if a specific value equals to
> > > > > something).
> > > > > I don't think it's wise to do both process in the same thread.
> > > > > 
> > > > > Thanks again, especially for your quick answer.
> > > > > 
> > > > > On Tue, 21 Sep 2004 09:50:01 -0400, "Michael Stover"
> > > > > <[EMAIL PROTECTED]> said:
> > > > > > Variables are not shared across threads.  JMeter simulates multiple
> > > > > > independent users, so there hasn't been any need to shared data amongst
> > > > > > the threads during the test run.
> > > > > > 
> > > > > > -Mike
> > > > > > 
> > > > > > On Tue, 2004-09-21 at 09:27, [EMAIL PROTECTED] wrote:
> > > > > > > I want to save variables that were initialized in one thread, so they
> > > > > > > will be seen in other thread.
> > > > > > > There is an easy way to save variables in the thread's context:
> > > > > > > JMeterContext context = getThreadContext();
> > > > > > > JMeterVariables vars = context.getVariables();
> > > > > > > vars.put(....
> > > > > > > 
> > > > > > > But trying to save variables so they will be seen in all the threads is
> > > > > > > much harder, I looked at: PreCompiler.addNode(Object,HashTree)
> > > > > > > and in my code tried naively to write:
> > > > > > > JMeterContextService.getContext().getVariables().put("code", "value");
> > > > > > > but this key was unvisible in other threads. I've noticed that there is
> > > > > > > some action doing with an instance of 'ValueReplacer' in the 'addNode'
> > > > > > > func, but still didn't figure to find out what to do.
> > > > > > > Tips will be most welcom
> > > > > > > 
> > > > > > > Thanks.
> > > > > > -- 
> > > > > > Michael Stover <[EMAIL PROTECTED]>
> > > > > > Apache Software Foundation
> > > > > > 
> > > > > > 
> > > > > > ---------------------------------------------------------------------
> > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > > > > 
> > > > -- 
> > > > Michael Stover <[EMAIL PROTECTED]>
> > > > Apache Software Foundation
> > > > 
> > > > 
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > > 
> > -- 
> > Michael Stover <[EMAIL PROTECTED]>
> > Apache Software Foundation
> > 
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> > 
-- 
Michael Stover <[EMAIL PROTECTED]>
Apache Software Foundation


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to