|
|
|
@ -30,16 +30,11 @@ local connect_to = arg[4] or 'inproc://thread_lat_test'
|
|
|
|
local zmq = require"zmq"
|
|
|
|
local zmq = require"zmq"
|
|
|
|
local zthreads = require"zmq.threads"
|
|
|
|
local zthreads = require"zmq.threads"
|
|
|
|
|
|
|
|
|
|
|
|
local socket = require"socket"
|
|
|
|
|
|
|
|
local time = socket.gettime
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
local child_code = [[
|
|
|
|
local child_code = [[
|
|
|
|
local connect_to, message_size, message_count = ...
|
|
|
|
local connect_to, message_size, message_count = ...
|
|
|
|
|
|
|
|
|
|
|
|
local zmq = require"zmq"
|
|
|
|
local zmq = require"zmq"
|
|
|
|
local zthreads = require"zmq.threads"
|
|
|
|
local zthreads = require"zmq.threads"
|
|
|
|
local socket = require"socket"
|
|
|
|
|
|
|
|
local time = socket.gettime
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
local ctx = zthreads.get_parent_ctx()
|
|
|
|
local ctx = zthreads.get_parent_ctx()
|
|
|
|
local s = ctx:socket(zmq.PUSH)
|
|
|
|
local s = ctx:socket(zmq.PUSH)
|
|
|
|
@ -49,23 +44,22 @@ local child_code = [[
|
|
|
|
local data = ("0"):rep(message_size)
|
|
|
|
local data = ("0"):rep(message_size)
|
|
|
|
local msg = zmq.zmq_msg_t.init_size(message_size)
|
|
|
|
local msg = zmq.zmq_msg_t.init_size(message_size)
|
|
|
|
|
|
|
|
|
|
|
|
local start_time = time()
|
|
|
|
local timer = zmq.stopwatch_start()
|
|
|
|
|
|
|
|
|
|
|
|
for i = 1, message_count do
|
|
|
|
for i = 1, message_count do
|
|
|
|
msg:set_data(data)
|
|
|
|
msg:set_data(data)
|
|
|
|
assert(s:send_msg(msg))
|
|
|
|
assert(s:send_msg(msg))
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
local end_time = time()
|
|
|
|
local elapsed = timer:stop()
|
|
|
|
|
|
|
|
|
|
|
|
s:close()
|
|
|
|
s:close()
|
|
|
|
|
|
|
|
|
|
|
|
local elapsed = end_time - start_time
|
|
|
|
|
|
|
|
if elapsed == 0 then elapsed = 1 end
|
|
|
|
if elapsed == 0 then elapsed = 1 end
|
|
|
|
|
|
|
|
|
|
|
|
local throughput = message_count / elapsed
|
|
|
|
local throughput = message_count / (elapsed / 1000000)
|
|
|
|
local megabits = throughput * message_size * 8 / 1000000
|
|
|
|
local megabits = throughput * message_size * 8 / 1000000
|
|
|
|
|
|
|
|
|
|
|
|
print(string.format("Sender mean throughput: %i [msg/s]", throughput))
|
|
|
|
print(string.format("Sender mean throughput: %i [msg/s]", throughput))
|
|
|
|
print(string.format("Sender mean throughput: %.3f [Mb/s]", megabits))
|
|
|
|
print(string.format("Sender mean throughput: %.3f [Mb/s]", megabits))
|
|
|
|
|
|
|
|
|
|
|
|
@ -86,23 +80,22 @@ local msg
|
|
|
|
msg = zmq.zmq_msg_t()
|
|
|
|
msg = zmq.zmq_msg_t()
|
|
|
|
assert(s:recv_msg(msg))
|
|
|
|
assert(s:recv_msg(msg))
|
|
|
|
|
|
|
|
|
|
|
|
local start_time = time()
|
|
|
|
local timer = zmq.stopwatch_start()
|
|
|
|
|
|
|
|
|
|
|
|
for i = 1, message_count - 1 do
|
|
|
|
for i = 1, message_count - 1 do
|
|
|
|
assert(s:recv_msg(msg))
|
|
|
|
assert(s:recv_msg(msg))
|
|
|
|
assert(msg:size() == message_size, "Invalid message size")
|
|
|
|
assert(msg:size() == message_size, "Invalid message size")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
local end_time = time()
|
|
|
|
local elapsed = timer:stop()
|
|
|
|
|
|
|
|
|
|
|
|
s:close()
|
|
|
|
s:close()
|
|
|
|
child_thread:join()
|
|
|
|
child_thread:join()
|
|
|
|
ctx:term()
|
|
|
|
ctx:term()
|
|
|
|
|
|
|
|
|
|
|
|
local elapsed = end_time - start_time
|
|
|
|
|
|
|
|
if elapsed == 0 then elapsed = 1 end
|
|
|
|
if elapsed == 0 then elapsed = 1 end
|
|
|
|
|
|
|
|
|
|
|
|
local throughput = message_count / elapsed
|
|
|
|
local throughput = message_count / (elapsed / 1000000)
|
|
|
|
local megabits = throughput * message_size * 8 / 1000000
|
|
|
|
local megabits = throughput * message_size * 8 / 1000000
|
|
|
|
|
|
|
|
|
|
|
|
print(string.format("mean throughput: %i [msg/s]", throughput))
|
|
|
|
print(string.format("mean throughput: %i [msg/s]", throughput))
|
|
|
|
|