All of lore.kernel.org
 help / color / mirror / Atom feed
* [patch net-next 0/3] net/sched: Improve getting objects by indexes
@ 2017-08-16  2:12 ` Chris Mi
  0 siblings, 0 replies; 63+ messages in thread
From: Chris Mi @ 2017-08-16  2:12 UTC (permalink / raw)
  To: netdev
  Cc: aditr, stern, agk, alexander.shishkin, alexandre.bounine,
	alexander.deucher, oakad, ast, elder, adobriyan, alex.williamson,
	AlexBin.Xie, viro, amd-gfx, amitkarwar, andresx7,
	andrew.donnellan, afd, akpm, anil.gurumurthy, anna.schumaker,
	acme, arnd, dedekind1, ashutosh.dixit, ath10k, Bart.VanAssche,
	bhaktipriya96, bjorn.andersson, boris.brezillon,
	computersforpeace, bryan.thompson, cgroups, 3chas3, chrism,
	christian.koenig, ccaulfie, chris, david1.zhou, cluster-devel,
	colin.king, xiyou.wangcong, cyrille.pitchen, daniel,
	daniel.vetter, dasaratharaman.chandramouli, airlied, dsa,
	airlied, david.binder, dhowells, david.kershner, dtwlin, dave,
	davem, teigland, dwindsor, dwmw2, dennis.dalessandro, devel,
	devesh.sharma, devicetree, dick.kennedy, dm-devel, don.hiatt,
	dgilbert, dledford, drbd-dev, dri-devel, elena.reshetova,
	edumazet, eparis, ericvh, ebiederm, evan.quan, felipe.balbi,
	Felix.Kuehling, f.fainelli, fw, frowand.list, fbarrat,
	fujita.tomonori, gbhat, geliangtang, kraxel, gregkh, greybus-dev,
	linux, gustavo.padovan, hal.rosenstock, hannes, hare, ishkamiel,
	hans.westgaard.ry, ray.huang, mingo, inki.dae, intel-gfx,
	intel-gvt-dev, iommu, ira.weiny, jinpu.wang, jhs, jejb,
	james.smart, jani.nikula, jack, jarkko.sakkinen, jarno, Jason,
	jgunthorpe, jasowang, javier, bfields, jlayton, axboe,
	jens.wiklander, jiangyilism, jiri, jiri, jlbec, joro, johan,
	johannes, hannes, john, jonathanh, jon.maloy, joonas.lahtinen,
	jy0922.shim, jbacik, Jerry.Zhang, jsarha, Kai.Makisara, kvalo,
	keescook, krzk, kgene, kvm, kyungmin.park, jiangshanlai,
	lars.ellenberg, lucho, lee.jones, leo.liu, leon, linux1394-devel,
	linux-arm-kernel, linux-atm-general, linux-block, linux-i2c,
	linux-kernel, linux-mm, linux-mtd, linux-nfs, linux-pm,
	linuxppc-dev, linux-ppp, linux-raid, linux-rdma,
	linux-remoteproc, linux-samsung-soc, linux-scsi, linux-sctp,
	linux-tegra, linux-usb, linux-wireless, logang, majd, manfred,
	tpmdd, marcos.souza.org, marek.vasut, mario.kleiner.de, markb,
	mfasheh, elfring, martin.petersen, matan, mawilcox, mporter,
	mchehab, maximlevitsky, mst, mhocko, michel.daenzer,
	mike.marciniszyn, rppt, snitzer, mszeredi, minchan, tom.leiming,
	monis, Monk.Liu, nbd-general, neilb, nhorman, nab,
	nicolai.haehnle, nicolas.dichtel, niranjana.vishwanathapura,
	nishants, ngupta, ocfs2-devel, ohad, oneukum, osandov, ogerlitz,
	pali.rohar, pantelis.antoniou, paulus, paul, peterhuewe, peterz,
	pmladek, philipp.reisner, pshelar, rjw, richard, rlove, robh+dt,
	giometti, rogerq, roman.kapl, rminnich, rmk+kernel,
	sainath.grandhi, sameer.wadgaonkar, sean.hefty, seanpaul,
	bigeasy, sre, nsekhar, selvin.xavier, sergey.senozhatsky.work,
	sw0312.kim, p.shailesh, shli, shaun.tancheff, syeh,
	sparmaintainer, stefanr, sboyd, stephen, swise,
	sudarsana.kalluru, sudeep.dutt, sumit.semwal, target-devel, tj,
	thierry.reding, thellstrom, timothy.sell, tipc-discussion,
	tomas.winkler, tomi.valkeinen, tpmdd-devel, trond.myklebust,
	v9fs-developer, varun, virtualization, vdavydov.dev, vyasevich,
	linux-graphics-maintainer, longman, weiyj.lk, wsa, huxm,
	ying.xue, yishaih, yuval.shaia, lizefan, zhenyuw, zhi.a.wang

Using current TC code, it is very slow to insert a lot of rules.

In order to improve the rules update rate in TC,
we introduced the following two changes:
        1) changed cls_flower to use IDR to manage the filters.
        2) changed all act_xxx modules to use IDR instead of
           a small hash table

But IDR has a limitation that it uses int. TC handle uses u32.
To make sure there is no regression, we also changed IDR to use
unsigned long. All clients of IDR are changed to use new IDR API.

Chris Mi (3):
  idr: Use unsigned long instead of int
  net/sched: Change cls_flower to use IDR
  net/sched: Change act_api and act_xxx modules to use IDR

 block/bsg.c                                     |   8 +-
 block/genhd.c                                   |  12 +-
 drivers/atm/nicstar.c                           |  11 +-
 drivers/block/drbd/drbd_main.c                  |  31 +--
 drivers/block/drbd/drbd_nl.c                    |  22 ++-
 drivers/block/drbd/drbd_proc.c                  |   3 +-
 drivers/block/drbd/drbd_receiver.c              |  15 +-
 drivers/block/drbd/drbd_state.c                 |  34 ++--
 drivers/block/drbd/drbd_worker.c                |   6 +-
 drivers/block/loop.c                            |  17 +-
 drivers/block/nbd.c                             |  20 +-
 drivers/block/zram/zram_drv.c                   |   9 +-
 drivers/char/tpm/tpm-chip.c                     |  10 +-
 drivers/char/tpm/tpm.h                          |   2 +-
 drivers/dca/dca-sysfs.c                         |   9 +-
 drivers/firewire/core-cdev.c                    |  18 +-
 drivers/firewire/core-device.c                  |  15 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c     |   8 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c         |   9 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c         |   6 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c         |   2 +-
 drivers/gpu/drm/drm_auth.c                      |   9 +-
 drivers/gpu/drm/drm_connector.c                 |  10 +-
 drivers/gpu/drm/drm_context.c                   |  20 +-
 drivers/gpu/drm/drm_dp_aux_dev.c                |  11 +-
 drivers/gpu/drm/drm_drv.c                       |   6 +-
 drivers/gpu/drm/drm_gem.c                       |  19 +-
 drivers/gpu/drm/drm_info.c                      |   2 +-
 drivers/gpu/drm/drm_mode_object.c               |  11 +-
 drivers/gpu/drm/drm_syncobj.c                   |  18 +-
 drivers/gpu/drm/exynos/exynos_drm_ipp.c         |  25 ++-
 drivers/gpu/drm/i915/gvt/display.c              |   2 +-
 drivers/gpu/drm/i915/gvt/kvmgt.c                |   2 +-
 drivers/gpu/drm/i915/gvt/vgpu.c                 |   9 +-
 drivers/gpu/drm/i915/i915_debugfs.c             |   6 +-
 drivers/gpu/drm/i915/i915_gem_context.c         |   9 +-
 drivers/gpu/drm/qxl/qxl_cmd.c                   |   8 +-
 drivers/gpu/drm/qxl/qxl_release.c               |  14 +-
 drivers/gpu/drm/sis/sis_mm.c                    |   8 +-
 drivers/gpu/drm/tegra/drm.c                     |  10 +-
 drivers/gpu/drm/tilcdc/tilcdc_slave_compat.c    |   3 +-
 drivers/gpu/drm/vgem/vgem_fence.c               |  12 +-
 drivers/gpu/drm/via/via_mm.c                    |   8 +-
 drivers/gpu/drm/virtio/virtgpu_kms.c            |   5 +-
 drivers/gpu/drm/virtio/virtgpu_vq.c             |   5 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_resource.c        |   9 +-
 drivers/i2c/i2c-core-base.c                     |  19 +-
 drivers/infiniband/core/cm.c                    |   8 +-
 drivers/infiniband/core/cma.c                   |  12 +-
 drivers/infiniband/core/rdma_core.c             |   9 +-
 drivers/infiniband/core/sa_query.c              |  23 +--
 drivers/infiniband/core/ucm.c                   |   7 +-
 drivers/infiniband/core/ucma.c                  |  14 +-
 drivers/infiniband/hw/cxgb3/iwch.c              |   4 +-
 drivers/infiniband/hw/cxgb3/iwch.h              |   4 +-
 drivers/infiniband/hw/cxgb4/device.c            |  18 +-
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h          |   4 +-
 drivers/infiniband/hw/hfi1/init.c               |   9 +-
 drivers/infiniband/hw/hfi1/vnic_main.c          |   6 +-
 drivers/infiniband/hw/mlx4/cm.c                 |  13 +-
 drivers/infiniband/hw/ocrdma/ocrdma_main.c      |   7 +-
 drivers/infiniband/hw/qib/qib_init.c            |   9 +-
 drivers/infiniband/ulp/opa_vnic/opa_vnic_vema.c |  10 +-
 drivers/iommu/intel-svm.c                       |   9 +-
 drivers/md/dm.c                                 |  13 +-
 drivers/memstick/core/memstick.c                |  10 +-
 drivers/memstick/core/ms_block.c                |   9 +-
 drivers/memstick/core/mspro_block.c             |  12 +-
 drivers/mfd/rtsx_pcr.c                          |   9 +-
 drivers/misc/c2port/core.c                      |   7 +-
 drivers/misc/cxl/context.c                      |   8 +-
 drivers/misc/cxl/main.c                         |  15 +-
 drivers/misc/mei/main.c                         |   8 +-
 drivers/misc/mic/scif/scif_api.c                |  11 +-
 drivers/misc/mic/scif/scif_ports.c              |  18 +-
 drivers/misc/tifm_core.c                        |   9 +-
 drivers/mtd/mtdcore.c                           |   9 +-
 drivers/mtd/mtdcore.h                           |   2 +-
 drivers/mtd/ubi/block.c                         |   7 +-
 drivers/net/ppp/ppp_generic.c                   |  27 +--
 drivers/net/tap.c                               |  10 +-
 drivers/net/wireless/ath/ath10k/htt.h           |   3 +-
 drivers/net/wireless/ath/ath10k/htt_tx.c        |  22 ++-
 drivers/net/wireless/ath/ath10k/mac.c           |   2 +-
 drivers/net/wireless/marvell/mwifiex/main.c     |  13 +-
 drivers/net/wireless/marvell/mwifiex/wmm.c      |   2 +-
 drivers/of/overlay.c                            |  15 +-
 drivers/of/unittest.c                           |  25 ++-
 drivers/power/supply/bq2415x_charger.c          |  16 +-
 drivers/power/supply/bq27xxx_battery_i2c.c      |  15 +-
 drivers/power/supply/ds2782_battery.c           |   9 +-
 drivers/powercap/powercap_sys.c                 |   8 +-
 drivers/pps/pps.c                               |  10 +-
 drivers/rapidio/rio_cm.c                        |  17 +-
 drivers/remoteproc/remoteproc_core.c            |   8 +-
 drivers/rpmsg/virtio_rpmsg_bus.c                |   8 +-
 drivers/scsi/bfa/bfad_im.c                      |   8 +-
 drivers/scsi/ch.c                               |   8 +-
 drivers/scsi/lpfc/lpfc_crtn.h                   |   2 +-
 drivers/scsi/lpfc/lpfc_init.c                   |  11 +-
 drivers/scsi/lpfc/lpfc_vport.c                  |   8 +-
 drivers/scsi/sg.c                               |  10 +-
 drivers/scsi/st.c                               |   8 +-
 drivers/staging/greybus/uart.c                  |  22 +--
 drivers/staging/unisys/visorhba/visorhba_main.c |   7 +-
 drivers/target/iscsi/iscsi_target.c             |   7 +-
 drivers/target/iscsi/iscsi_target_login.c       |   9 +-
 drivers/target/target_core_device.c             |   9 +-
 drivers/target/target_core_user.c               |  13 +-
 drivers/tee/tee_shm.c                           |   8 +-
 drivers/uio/uio.c                               |   9 +-
 drivers/usb/class/cdc-acm.c                     |  24 +--
 drivers/usb/core/devices.c                      |   2 +-
 drivers/usb/core/hcd.c                          |   7 +-
 drivers/usb/mon/mon_main.c                      |   3 +-
 drivers/usb/serial/usb-serial.c                 |  11 +-
 drivers/vfio/vfio.c                             |  15 +-
 fs/dlm/lock.c                                   |   9 +-
 fs/dlm/lockspace.c                              |   6 +-
 fs/dlm/recover.c                                |  10 +-
 fs/nfs/nfs4client.c                             |   9 +-
 fs/nfsd/nfs4state.c                             |   8 +-
 fs/notify/inotify/inotify_fsnotify.c            |   4 +-
 fs/notify/inotify/inotify_user.c                |   9 +-
 fs/ocfs2/cluster/tcp.c                          |  10 +-
 include/linux/idr.h                             |  26 +--
 include/linux/of.h                              |   4 +-
 include/linux/radix-tree.h                      |   2 +-
 include/net/9p/9p.h                             |   2 +-
 include/net/act_api.h                           |  76 +++-----
 ipc/msg.c                                       |   2 +-
 ipc/sem.c                                       |   2 +-
 ipc/shm.c                                       |   4 +-
 ipc/util.c                                      |  17 +-
 kernel/bpf/syscall.c                            |  20 +-
 kernel/cgroup/cgroup.c                          |  57 +++---
 kernel/events/core.c                            |  10 +-
 kernel/workqueue.c                              |  15 +-
 lib/idr.c                                       |  38 ++--
 lib/radix-tree.c                                |   5 +-
 mm/memcontrol.c                                 |  11 +-
 net/9p/client.c                                 |  17 +-
 net/9p/util.c                                   |  14 +-
 net/core/net_namespace.c                        |  23 ++-
 net/mac80211/cfg.c                              |  23 +--
 net/mac80211/iface.c                            |   3 +-
 net/mac80211/main.c                             |   2 +-
 net/mac80211/tx.c                               |   7 +-
 net/mac80211/util.c                             |   3 +-
 net/netlink/genetlink.c                         |  18 +-
 net/qrtr/qrtr.c                                 |  21 +-
 net/rxrpc/conn_client.c                         |  15 +-
 net/sched/act_api.c                             | 249 +++++++++++-------------
 net/sched/act_bpf.c                             |  17 +-
 net/sched/act_connmark.c                        |  16 +-
 net/sched/act_csum.c                            |  16 +-
 net/sched/act_gact.c                            |  16 +-
 net/sched/act_ife.c                             |  20 +-
 net/sched/act_ipt.c                             |  26 ++-
 net/sched/act_mirred.c                          |  19 +-
 net/sched/act_nat.c                             |  16 +-
 net/sched/act_pedit.c                           |  18 +-
 net/sched/act_police.c                          |  18 +-
 net/sched/act_sample.c                          |  17 +-
 net/sched/act_simple.c                          |  20 +-
 net/sched/act_skbedit.c                         |  18 +-
 net/sched/act_skbmod.c                          |  18 +-
 net/sched/act_tunnel_key.c                      |  20 +-
 net/sched/act_vlan.c                            |  22 +--
 net/sched/cls_flower.c                          |  55 +++---
 net/sctp/associola.c                            |   8 +-
 net/tipc/server.c                               |   7 +-
 172 files changed, 1256 insertions(+), 1113 deletions(-)

-- 
1.8.3.1

^ permalink raw reply	[flat|nested] 63+ messages in thread
* [patch net-next 0/3] net/sched: Improve getting objects by indexes
@ 2017-08-28  6:41 Chris Mi
  2017-08-28  6:41 ` [patch net-next 3/3] net/sched: Change act_api and act_xxx modules to use IDR Chris Mi
  0 siblings, 1 reply; 63+ messages in thread
From: Chris Mi @ 2017-08-28  6:41 UTC (permalink / raw)
  To: netdev; +Cc: jhs, xiyou.wangcong, jiri, davem, mawilcox

Using current TC code, it is very slow to insert a lot of rules.

In order to improve the rules update rate in TC,
we introduced the following two changes:
        1) changed cls_flower to use IDR to manage the filters.
        2) changed all act_xxx modules to use IDR instead of
           a small hash table

But IDR has a limitation that it uses int. TC handle uses u32.
To make sure there is no regression, we add several new IDR APIs
to support unsigned long.

Chris Mi (3):
  idr: Add new APIs to support unsigned long
  net/sched: Change cls_flower to use IDR
  net/sched: Change act_api and act_xxx modules to use IDR

 include/linux/idr.h        |  16 +++
 include/linux/radix-tree.h |   3 +
 include/net/act_api.h      |  76 +++++---------
 lib/idr.c                  |  56 ++++++++++
 lib/radix-tree.c           |  73 +++++++++++++
 net/sched/act_api.c        | 251 ++++++++++++++++++++++-----------------------
 net/sched/act_bpf.c        |  17 ++-
 net/sched/act_connmark.c   |  16 ++-
 net/sched/act_csum.c       |  16 ++-
 net/sched/act_gact.c       |  16 ++-
 net/sched/act_ife.c        |  20 ++--
 net/sched/act_ipt.c        |  26 +++--
 net/sched/act_mirred.c     |  19 ++--
 net/sched/act_nat.c        |  16 ++-
 net/sched/act_pedit.c      |  18 ++--
 net/sched/act_police.c     |  18 ++--
 net/sched/act_sample.c     |  17 ++-
 net/sched/act_simple.c     |  20 ++--
 net/sched/act_skbedit.c    |  18 ++--
 net/sched/act_skbmod.c     |  18 ++--
 net/sched/act_tunnel_key.c |  20 ++--
 net/sched/act_vlan.c       |  22 ++--
 net/sched/cls_flower.c     |  55 +++++-----
 23 files changed, 450 insertions(+), 377 deletions(-)

-- 
1.8.3.1

^ permalink raw reply	[flat|nested] 63+ messages in thread

end of thread, other threads:[~2017-08-28 21:56 UTC | newest]

Thread overview: 63+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-16  2:12 [patch net-next 0/3] net/sched: Improve getting objects by indexes Chris Mi
2017-08-16  2:12 ` [Cluster-devel] " Chris Mi
2017-08-16  2:12 ` Chris Mi
2017-08-16  2:12 ` Chris Mi
2017-08-16  2:12 ` Chris Mi
2017-08-16  2:12 ` [patch net-next 1/3] idr: Use unsigned long instead of int Chris Mi
2017-08-16  2:12   ` [Cluster-devel] " Chris Mi
2017-08-16  2:12   ` Chris Mi
2017-08-16  2:12   ` Chris Mi
2017-08-16  2:12   ` Chris Mi
2017-08-16 21:44   ` Alexey Dobriyan
2017-08-16 21:56   ` Frank Rowand
2017-08-16 21:56     ` Frank Rowand
2017-08-16  2:12 ` Chris Mi
2017-08-16  2:12 ` Chris Mi
2017-08-16  2:12 ` Chris Mi
2017-08-16  2:12 ` [patch net-next 2/3] net/sched: Change cls_flower to use IDR Chris Mi
2017-08-16  2:12 ` Chris Mi
2017-08-16  2:12 ` Chris Mi
2017-08-16  2:12 ` Chris Mi
2017-08-16  2:12   ` [Cluster-devel] " Chris Mi
2017-08-16  2:12   ` Chris Mi
2017-08-16  2:12   ` Chris Mi
2017-08-16  2:12   ` Chris Mi
2017-08-16  2:12 ` [patch net-next 3/3] net/sched: Change act_api and act_xxx modules " Chris Mi
2017-08-16  2:12 ` Chris Mi
2017-08-16  2:12 ` Chris Mi
2017-08-16  2:12   ` [Cluster-devel] " Chris Mi
2017-08-16  2:12   ` Chris Mi
2017-08-16  2:12   ` Chris Mi
2017-08-16  2:12   ` Chris Mi
2017-08-16  2:12 ` Chris Mi
2017-08-16  3:05 ` [patch net-next 0/3] net/sched: Improve getting objects by indexes David Miller
2017-08-16  3:38   ` Chris Mi
2017-08-16  7:49 ` Christian König
2017-08-16  7:49 ` Christian König
2017-08-16  7:49 ` Christian König
2017-08-16  7:49   ` [Cluster-devel] " Christian König
2017-08-16  7:49   ` Christian König
2017-08-16  7:49   ` Christian König
2017-08-16  7:49   ` Christian König
2017-08-16  8:16   ` Jiri Pirko
2017-08-16  8:31     ` Christian König
2017-08-16  8:39       ` Jiri Pirko
2017-08-16  8:55         ` Christian König
2017-08-16  9:31           ` Jiri Pirko
2017-08-16  9:41             ` Christian König
2017-08-16 14:28       ` David Laight
2017-08-16  9:19   ` Chris Wilson
2017-08-16  9:19   ` Chris Wilson
2017-08-16  9:19   ` Chris Wilson
2017-08-16  9:19     ` Chris Wilson
2017-08-16  9:19     ` [Cluster-devel] " Chris Wilson
2017-08-16  9:19     ` Chris Wilson
2017-08-16  9:19     ` Chris Wilson
2017-08-16  9:19     ` Chris Wilson
2017-08-16  9:19     ` Chris Wilson
2017-08-16  9:19   ` Chris Wilson
2017-08-16  7:49 ` Christian König
2017-08-16 21:51 ` Frank Rowand
2017-08-16 21:51   ` Frank Rowand
2017-08-28  6:41 Chris Mi
2017-08-28  6:41 ` [patch net-next 3/3] net/sched: Change act_api and act_xxx modules to use IDR Chris Mi
2017-08-28 21:56   ` Jamal Hadi Salim

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.