Skip to content

Commit 46a269c

Browse files
committed
committed changes from @marcinwoj;
1 parent 7100c42 commit 46a269c

File tree

5 files changed

+52
-7
lines changed

5 files changed

+52
-7
lines changed

client.cpp

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,18 @@ inline unsigned long int ts_diff_now(struct timeval a)
8989
return bval - aval;
9090
}
9191

92+
/*inline unsigned long int ts_now()
93+
{
94+
struct timeval b;
95+
96+
gettimeofday(&b, NULL);
97+
//unsigned long long bval = b.tv_sec * 1000000 + b.tv_usec;
98+
99+
//return bval;
100+
return b;
101+
}
102+
*/
103+
92104
inline timeval timeval_factorial_avarge( timeval a, timeval b, unsigned int weight)
93105
{
94106
timeval tv;
@@ -275,7 +287,8 @@ int client::connect(void)
275287
evbuffer_drain(m_write_buf, evbuffer_get_length(m_write_buf));
276288

277289
if (m_unix_sockaddr != NULL) {
278-
m_sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
290+
//m_sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
291+
m_sockfd = socket(AF_UNIX, SOCK_DGRAM, 0);
279292
if (m_sockfd < 0) {
280293
return -errno;
281294
}
@@ -300,8 +313,8 @@ int client::connect(void)
300313
error = setsockopt(m_sockfd, SOL_SOCKET, SO_LINGER, (void *)&ling, sizeof(ling));
301314
assert(error == 0);
302315

303-
error = setsockopt(m_sockfd, IPPROTO_TCP, TCP_NODELAY, (void *)&flags, sizeof(flags));
304-
assert(error == 0);
316+
//error = setsockopt(m_sockfd, IPPROTO_TCP, TCP_NODELAY, (void *)&flags, sizeof(flags));
317+
//assert(error == 0);
305318
}
306319

307320
// set non-blcoking behavior
@@ -555,6 +568,7 @@ void client::create_request(void)
555568
assert(key != NULL);
556569
assert(keylen > 0);
557570

571+
keylen = 6;
558572
benchmark_debug_log("GET key=[%.*s]\n", keylen, key);
559573
cmd_size = m_protocol->write_command_get(key, keylen, m_config->data_offset);
560574

@@ -616,15 +630,24 @@ void client::process_first_request(void)
616630

617631
void client::handle_response(request *request, protocol_response *response)
618632
{
633+
634+
//long long unsigned int tmp = 0;
619635
switch (request->m_type) {
620636
case rt_get:
637+
//printf("GET %lu\n",ts_diff_now(request->m_sent_time));
621638
m_stats.update_get_op(NULL,
622639
request->m_size + response->get_total_len(),
623640
ts_diff_now(request->m_sent_time),
624641
response->get_hits(),
625642
request->m_keys - response->get_hits());
643+
//printf("now %d\n",ts_now());
644+
//b.tv_sec * 1000000 + b.tv_usec;
645+
//printf("request->m_sent_time %lld %lld\n",request->m_sent_time.tv_sec, request->m_sent_time.tv_usec);
646+
//printf("Latency %d\n",ts_diff_now(request->m_sent_time));
647+
//printf("Get %lld\n",ts_diff_now(request->m_sent_time));
626648
break;
627649
case rt_set:
650+
// printf("SET %lu\n",ts_diff_now(request->m_sent_time));
628651
m_stats.update_set_op(NULL,
629652
request->m_size + response->get_total_len(),
630653
ts_diff_now(request->m_sent_time));
@@ -1380,6 +1403,7 @@ void run_stats::print(FILE *out, bool histogram)
13801403
// aggregate all one_second_stats; we do this only if we have
13811404
// one_second_stats, otherwise it means we're probably printing previously
13821405
// aggregated data
1406+
debug_dump();
13831407
if (m_stats.size() > 0) {
13841408
summarize(m_totals);
13851409
}

config_types.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,8 @@ int server_addr::resolve(void)
215215

216216
memset(&hints, 0, sizeof(hints));
217217
hints.ai_flags = AI_PASSIVE;
218-
hints.ai_socktype = SOCK_STREAM;
218+
//hints.ai_socktype = SOCK_STREAM;
219+
hints.ai_socktype = SOCK_DGRAM;
219220
hints.ai_family = AF_INET; // Don't play with IPv6 for now...
220221

221222
snprintf(port_str, sizeof(port_str)-1, "%u", m_port);

libmemcached_protocol/binary.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ extern "C"
185185
*/
186186
typedef union {
187187
struct {
188+
uint64_t udp_header;
188189
uint8_t magic;
189190
uint8_t opcode;
190191
uint16_t keylen;
@@ -204,6 +205,7 @@ extern "C"
204205
*/
205206
typedef union {
206207
struct {
208+
uint64_t udp_header;
207209
uint8_t magic;
208210
uint8_t opcode;
209211
uint16_t keylen;

obj_gen.cpp

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -358,12 +358,24 @@ unsigned int object_generator::get_key_index(int iter)
358358

359359
const char* object_generator::get_key(int iter, unsigned int *len)
360360
{
361+
362+
char a[6] = {0xC, 0xA, 0xF, 0xE, 0xC, 0xA};
363+
unsigned int i;
361364
unsigned int l;
362365
m_key_index = get_key_index(iter);
363366

364367
// format key
365-
l = snprintf(m_key_buffer, sizeof(m_key_buffer)-1,
366-
"%s%u", m_key_prefix, m_key_index);
368+
//l = snprintf(m_key_buffer, sizeof(m_key_buffer)-1,
369+
370+
//fixed
371+
//l = snprintf(m_key_buffer, 7,
372+
// "%s%u", m_key_prefix, m_key_index);
373+
374+
//rnd COMENT OUT for FIX key
375+
for (i=0; i < 6; ++i){
376+
a[i] = (char)random_range(0, 15);
377+
}
378+
l = snprintf(m_key_buffer, 7, "%x%x%x%x%x%x%x%x", a[0], a[1], a[2], a[3], a[4], a[5], a[0], a[1]);
367379
if (len != NULL) *len = l;
368380

369381
return m_key_buffer;
@@ -400,6 +412,8 @@ data_object* object_generator::get_object(int iter)
400412
}
401413

402414
// set object
415+
new_size = 8;
416+
//printf("setting key of len %d\n", strlen(m_key_buffer));
403417
m_object.set_key(m_key_buffer, strlen(m_key_buffer));
404418
m_object.set_value(m_value_buffer, new_size);
405419
m_object.set_expiry(expiry);

protocol.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ int memcache_text_protocol::write_command_set(const char *key, int key_len, cons
410410
assert(value != NULL);
411411
assert(value_len > 0);
412412
int size = 0;
413-
413+
414414
size = evbuffer_add_printf(m_write_buf,
415415
"set %.*s 0 %u %u\r\n", key_len, key, expiry, value_len);
416416
evbuffer_add(m_write_buf, value, value_len);
@@ -630,6 +630,7 @@ int memcache_binary_protocol::write_command_set(const char *key, int key_len, co
630630
protocol_binary_request_set req;
631631

632632
memset(&req, 0, sizeof(req));
633+
req.message.header.request.udp_header = 0x0000010000000000;
633634
req.message.header.request.magic = PROTOCOL_BINARY_REQ;
634635
req.message.header.request.opcode = PROTOCOL_BINARY_CMD_SET;
635636
req.message.header.request.keylen = htons(key_len);
@@ -653,6 +654,8 @@ int memcache_binary_protocol::write_command_get(const char *key, int key_len, un
653654
protocol_binary_request_get req;
654655

655656
memset(&req, 0, sizeof(req));
657+
benchmark_debug_log("here");
658+
req.message.header.request.udp_header = 0x0000010000000000;
656659
req.message.header.request.magic = PROTOCOL_BINARY_REQ;
657660
req.message.header.request.opcode = PROTOCOL_BINARY_CMD_GET;
658661
req.message.header.request.keylen = htons(key_len);
@@ -724,6 +727,7 @@ int memcache_binary_protocol::parse_response(void)
724727

725728
ret = evbuffer_remove(m_read_buf, (void *)&m_response_hdr, sizeof(m_response_hdr));
726729
assert(ret == sizeof(m_response_hdr));
730+
//printf("sizse of resposne header %d\n",sizeof(m_response_hdr));
727731

728732
if (m_response_hdr.message.header.response.magic != PROTOCOL_BINARY_RES) {
729733
benchmark_error_log("error: invalid memcache response header magic.\n");

0 commit comments

Comments
 (0)