[Groonga-commit] droonga/drnbench at 4101977 [master] Don't setup too much clients

Back to archive index

YUKI Hiroshi null+****@clear*****
Thu Nov 27 17:53:28 JST 2014


YUKI Hiroshi	2014-11-27 17:53:28 +0900 (Thu, 27 Nov 2014)

  New Revision: 4101977316292a6ff6c958465caba7f6f0a93223
  https://github.com/droonga/drnbench/commit/4101977316292a6ff6c958465caba7f6f0a93223

  Message:
    Don't setup too much clients

  Modified files:
    lib/drnbench/request-response/runner.rb

  Modified: lib/drnbench/request-response/runner.rb (+12 -5)
===================================================================
--- lib/drnbench/request-response/runner.rb    2014-11-27 17:48:56 +0900 (31b580b)
+++ lib/drnbench/request-response/runner.rb    2014-11-27 17:53:28 +0900 (8dec533)
@@ -75,15 +75,18 @@ module Drnbench
 
       def setup_child_processes
         @child_process_pipes = []
+        @total_n_clients = 0
         n_processes.times.each do |index|
           setup_child_process
         end
       end
 
       def setup_child_process
-        parent_read, child_write = IO.pipe
-        child_read, parent_write = IO.pipe
-        @child_process_pipes << [parent_read, parent_write]
+        n_clients = n_clients_per_process
+        if @total_n_clients + n_clients > @n_clients
+          n_clients = @n_clients - @total_n_clients
+        end
+        return if n_clients <= 0
 
         # Prepare request queue for child process at first
         # to reduce needless inter-process communications (IPC) while running!
@@ -92,6 +95,10 @@ module Drnbench
           child_process_requests_queue.push(@requests_queue.pop)
         end
 
+        parent_read, child_write = IO.pipe
+        child_read, parent_write = IO.pipe
+        @child_process_pipes << [parent_read, parent_write]
+
         fork do
           parent_write.close
           parent_read.close
@@ -101,7 +108,7 @@ module Drnbench
           @requests_queue = child_process_requests_queue
           @result = []
 
-          clients = setup_clients(n_clients_per_process)
+          clients = setup_clients(n_clients)
 
           loop do
             message = child_read.gets
@@ -195,7 +202,7 @@ module Drnbench
       end
 
       def n_clients_per_process
-        (@n_clients.to_f / n_processes).round
+        (@n_clients.to_f / n_processes).ceil
       end
 
       def n_requests_per_process
-------------- next part --------------
HTML����������������������������...
Télécharger 



More information about the Groonga-commit mailing list
Back to archive index