linux-xiaomi-chiron/include/linux/sunrpc
Trond Myklebust 5edd1051f4 SUNRPC: Reorder rpc_task to put waitqueue related info in same cachelines
Try to group all the data required by the waitqueues, their timers and timer
callbacks into the same cachelines for performance. With this reordering,
"pahole" reports the following structure on x86_64:

struct rpc_task {
        atomic_t                   tk_count;             /*     0     4 */
        int                        tk_status;            /*     4     4 */
        struct list_head           tk_task;              /*     8    16 */
        void                       (*tk_callback)(struct rpc_task *); /*    24
        void                       (*tk_action)(struct rpc_task *); /*    32
        long unsigned int          tk_timeout;           /*    40     8 */
        long unsigned int          tk_runstate;          /*    48     8 */
        struct rpc_wait_queue *    tk_waitqueue;         /*    56     8 */
        /* --- cacheline 1 boundary (64 bytes) --- */
        union {
                struct work_struct tk_work;              /*          64 */
                struct rpc_wait    tk_wait;              /*          56 */
        } u;                                             /*    64    64 */
        /* --- cacheline 2 boundary (128 bytes) --- */
        struct rpc_message         tk_msg;               /*   128    32 */
        void *                     tk_calldata;          /*   160     8 */
        const struct rpc_call_ops  * tk_ops;             /*   168     8 */
        struct rpc_clnt *          tk_client;            /*   176     8 */
        struct rpc_rqst *          tk_rqstp;             /*   184     8 */
        /* --- cacheline 3 boundary (192 bytes) --- */
        struct workqueue_struct *  tk_workqueue;         /*   192     8 */
        ktime_t                    tk_start;             /*   200     8 */
        pid_t                      tk_owner;             /*   208     4 */
        short unsigned int         tk_flags;             /*   212     2 */
        short unsigned int         tk_timeouts;          /*   214     2 */
        short unsigned int         tk_pid;               /*   216     2 */
        unsigned char              tk_priority:2;        /*   218: 6  1 */
        unsigned char              tk_garb_retry:2;      /*   218: 4  1 */
        unsigned char              tk_cred_retry:2;      /*   218: 2  1 */
        unsigned char              tk_rebind_retry:2;    /*   218: 0  1 */

        /* size: 224, cachelines: 4, members: 24 */
        /* padding: 5 */
        /* last cacheline: 32 bytes */
};

whereas on i386, it reports everything fitting into the 1st cacheline.

Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
2016-01-31 21:37:22 -05:00
..
addr.h SUNRPC: Drop double-underscores from __rpc_cmp_addr6() 2015-08-17 14:47:53 -05:00
auth.h sunrpc: increase UNX_MAXNODENAME from 32 to __NEW_UTS_LEN bytes 2015-08-12 14:31:04 -04:00
auth_gss.h sunrpc: remove __rcu annotation from struct gss_cl_ctx->gc_gss_ctx 2014-08-03 17:05:23 -04:00
bc_xprt.h SUNRPC: Abstract backchannel operations 2015-11-02 13:45:15 -05:00
cache.h sunrpc/cache: make cache flushing more reliable. 2015-10-23 15:57:30 -04:00
clnt.h SUNRPC: Remove unused function rpc_task_reset_client 2016-01-31 21:37:22 -05:00
debug.h sunrpc: make debugfs file creation failure non-fatal 2015-04-23 14:42:27 -04:00
gss_api.h svcrpc: store gss mech in svc_cred 2013-07-01 17:23:06 -04:00
gss_asn1.h
gss_err.h
gss_krb5.h sunrpc: remove "ec" argument from encrypt_v2 operation 2014-08-03 17:05:24 -04:00
gss_krb5_enctypes.h
metrics.h SUNRPC: Fix a compile error when #undef CONFIG_PROC_FS 2015-02-12 08:31:38 -05:00
msg_prot.h SUNRPC: Introduce missing well-known netids 2015-03-31 09:52:52 -04:00
rpc_pipe_fs.h sunrpc: replace sunrpc_net->gssd_running flag with a more reliable check 2013-12-06 13:06:31 -05:00
rpc_rdma.h xprtrdma: Clean up hdrlen 2015-01-30 10:47:48 -05:00
sched.h SUNRPC: Reorder rpc_task to put waitqueue related info in same cachelines 2016-01-31 21:37:22 -05:00
stats.h SUNRPC: constify the rpc_program 2012-01-31 19:28:20 -05:00
svc.h nfsd/sunrpc: factor svc_rqst allocation and freeing from sv_nrthreads refcounting 2015-08-10 16:05:44 -04:00
svc_rdma.h svc_rdma: use local_dma_lkey 2016-01-19 15:30:48 -05:00
svc_xprt.h sunrpc: Add a function to close temporary transports immediately 2015-12-23 10:08:15 -05:00
svcauth.h nfsd4: fix gss-proxy 4.1 mounts for some AD principals 2015-11-24 11:36:31 -07:00
svcauth_gss.h nfsd4: move principal name into svc_cred 2012-05-31 20:29:55 -04:00
svcsock.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-04-12 17:31:22 -07:00
timer.h
types.h
xdr.h rpc: define xdr_restrict_buflen 2014-05-30 17:32:01 -04:00
xprt.h NFS: Enable client side NFSv4.1 backchannel to use other transports 2015-11-02 16:29:13 -05:00
xprtrdma.h xprtrdma: Increase default credit limit 2015-08-05 16:21:26 -04:00
xprtsock.h SUNRPC: Move TCP receive data path into a workqueue context 2015-10-08 08:27:04 -04:00