From: James Simmons Date: Tue, 6 Oct 2015 02:54:27 +0000 (-0400) Subject: LU-7245 socklnd: Bind peers to a specific CPT X-Git-Tag: 2.7.63~43 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=68eb6e841f49d41a289bd0b3f559973b6cb31738;p=fs%2Flustre-release.git LU-7245 socklnd: Bind peers to a specific CPT Currently the socklnd driver doesn't support CPT affinity for its peers. Binding peers to a specific CPT and memory allocated to the NUMA node belonging to the CPT should give a performance boost. Change-Id: I1cc418dc4ba6269e346a4aa1454de79e580e1fba Signed-off-by: James Simmons Reviewed-on: http://review.whamcloud.com/16710 Tested-by: Jenkins Reviewed-by: Olaf Weber Tested-by: Maloo Reviewed-by: Amir Shehata Reviewed-by: Oleg Drokin --- diff --git a/lnet/klnds/socklnd/socklnd.c b/lnet/klnds/socklnd/socklnd.c index ba7382a..ddc1460 100644 --- a/lnet/klnds/socklnd/socklnd.c +++ b/lnet/klnds/socklnd/socklnd.c @@ -100,24 +100,23 @@ ksocknal_destroy_route (ksock_route_t *route) } static int -ksocknal_create_peer (ksock_peer_t **peerp, lnet_ni_t *ni, lnet_process_id_t id) +ksocknal_create_peer(ksock_peer_t **peerp, lnet_ni_t *ni, lnet_process_id_t id) { - ksock_net_t *net = ni->ni_data; - ksock_peer_t *peer; + int cpt = lnet_cpt_of_nid(id.nid); + ksock_net_t *net = ni->ni_data; + ksock_peer_t *peer; - LASSERT (id.nid != LNET_NID_ANY); - LASSERT (id.pid != LNET_PID_ANY); - LASSERT (!in_interrupt()); + LASSERT(id.nid != LNET_NID_ANY); + LASSERT(id.pid != LNET_PID_ANY); + LASSERT(!in_interrupt()); - LIBCFS_ALLOC (peer, sizeof (*peer)); + LIBCFS_CPT_ALLOC(peer, lnet_cpt_table(), cpt, sizeof(*peer)); if (peer == NULL) return -ENOMEM; - memset (peer, 0, sizeof (*peer)); /* NULL pointers/clear flags etc */ - peer->ksnp_ni = ni; peer->ksnp_id = id; - atomic_set (&peer->ksnp_refcount, 1); /* 1 ref for caller */ + atomic_set(&peer->ksnp_refcount, 1); /* 1 ref for caller */ peer->ksnp_closing = 0; peer->ksnp_accepting = 0; peer->ksnp_proto = NULL;