)]}'
{
  "commit": "254eff771441f4ee7aa9cf770a6e4820492c9dab",
  "tree": "aa657717e9c52ce7941179c11da78f4173f333c5",
  "parents": [
    "25c38d3fb92fc23af7730a1601bc20af8216ae44"
  ],
  "author": {
    "name": "Huang Ying",
    "email": "ying.huang@intel.com",
    "time": "Thu Feb 19 14:42:19 2009 +0800"
  },
  "committer": {
    "name": "Herbert Xu",
    "email": "herbert@gondor.apana.org.au",
    "time": "Thu Feb 19 14:42:19 2009 +0800"
  },
  "message": "crypto: cryptd - Per-CPU thread implementation based on kcrypto_wq\n\nOriginal cryptd thread implementation has scalability issue, this\npatch solve the issue with a per-CPU thread implementation.\n\nstruct cryptd_queue is defined to be a per-CPU queue, which holds one\nstruct cryptd_cpu_queue for each CPU. In struct cryptd_cpu_queue, a\nstruct crypto_queue holds all requests for the CPU, a struct\nwork_struct is used to run all requests for the CPU.\n\nTesting based on dm-crypt on an Intel Core 2 E6400 (two cores) machine\nshows 19.2% performance gain. The testing script is as follow:\n\n-------------------- script begin ---------------------------\n#!/bin/sh\n\ndmc_create()\n{\n        # Create a crypt device using dmsetup\n        dmsetup create $2 --table \"0 `blockdev --getsize $1` crypt cbc(aes-asm)?cryptd?plain:plain babebabebabebabebabebabebabebabe 0 $1 0\"\n}\n\ndmsetup remove crypt0\ndmsetup remove crypt1\n\ndd if\u003d/dev/zero of\u003d/dev/ram0 bs\u003d1M count\u003d4 \u003e\u0026 /dev/null\ndd if\u003d/dev/zero of\u003d/dev/ram1 bs\u003d1M count\u003d4 \u003e\u0026 /dev/null\n\ndmc_create /dev/ram0 crypt0\ndmc_create /dev/ram1 crypt1\n\ncat \u003etr.sh \u003c\u003cEOF\n#!/bin/sh\n\nfor n in \\$(seq 10); do\n        dd if\u003d/dev/dm-0 of\u003d/dev/null \u003e\u0026 /dev/null \u0026\n        dd if\u003d/dev/dm-1 of\u003d/dev/null \u003e\u0026 /dev/null \u0026\ndone\nwait\nEOF\n\nfor n in $(seq 10); do\n        /usr/bin/time sh tr.sh\ndone\nrm tr.sh\n-------------------- script end   ---------------------------\n\nThe separator of dm-crypt parameter is changed from \"-\" to \"?\", because\n\"-\" is used in some cipher driver name too, and cryptds need to specify\ncipher driver name instead of cipher name.\n\nThe test result on an Intel Core2 E6400 (two cores) is as follow:\n\nwithout patch:\n-----------------wo begin --------------------------\n0.04user 0.38system 0:00.39elapsed 107%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+0outputs (0major+6566minor)pagefaults 0swaps\n0.07user 0.35system 0:00.35elapsed 121%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+0outputs (0major+6567minor)pagefaults 0swaps\n0.06user 0.34system 0:00.30elapsed 135%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+0outputs (0major+6562minor)pagefaults 0swaps\n0.05user 0.37system 0:00.36elapsed 119%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+0outputs (0major+6607minor)pagefaults 0swaps\n0.06user 0.36system 0:00.35elapsed 120%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+0outputs (0major+6562minor)pagefaults 0swaps\n0.05user 0.37system 0:00.31elapsed 136%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+0outputs (0major+6594minor)pagefaults 0swaps\n0.04user 0.34system 0:00.30elapsed 126%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+0outputs (0major+6597minor)pagefaults 0swaps\n0.06user 0.32system 0:00.31elapsed 125%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+0outputs (0major+6571minor)pagefaults 0swaps\n0.06user 0.34system 0:00.31elapsed 134%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+0outputs (0major+6581minor)pagefaults 0swaps\n0.05user 0.38system 0:00.31elapsed 138%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+0outputs (0major+6600minor)pagefaults 0swaps\n-----------------wo end   --------------------------\n\n\nwith patch:\n------------------w begin --------------------------\n0.02user 0.31system 0:00.24elapsed 141%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+0outputs (0major+6554minor)pagefaults 0swaps\n0.05user 0.34system 0:00.31elapsed 127%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+0outputs (0major+6606minor)pagefaults 0swaps\n0.07user 0.33system 0:00.26elapsed 155%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+0outputs (0major+6559minor)pagefaults 0swaps\n0.07user 0.32system 0:00.26elapsed 151%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+0outputs (0major+6562minor)pagefaults 0swaps\n0.05user 0.34system 0:00.26elapsed 150%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+0outputs (0major+6603minor)pagefaults 0swaps\n0.03user 0.36system 0:00.31elapsed 124%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+0outputs (0major+6562minor)pagefaults 0swaps\n0.04user 0.35system 0:00.26elapsed 147%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+0outputs (0major+6586minor)pagefaults 0swaps\n0.03user 0.37system 0:00.27elapsed 146%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+0outputs (0major+6562minor)pagefaults 0swaps\n0.04user 0.36system 0:00.26elapsed 154%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+0outputs (0major+6594minor)pagefaults 0swaps\n0.04user 0.35system 0:00.26elapsed 154%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+0outputs (0major+6557minor)pagefaults 0swaps\n------------------w end   --------------------------\n\nThe middle value of elapsed time is:\nwo cryptwq: 0.31\nw  cryptwq: 0.26\n\nThe performance gain is about (0.31-0.26)/0.26 \u003d 0.192.\n\nSigned-off-by: Huang Ying \u003cying.huang@intel.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "420b630a17cf90b32a833f8cdeb15619fb1c92eb",
      "old_mode": 33188,
      "old_path": "crypto/Kconfig",
      "new_id": "24c31efde88264d45a0523908ff48f25e7be1a2d",
      "new_mode": 33188,
      "new_path": "crypto/Kconfig"
    },
    {
      "type": "modify",
      "old_id": "93b98c525b3a9d945893b01621c65ec6adab9298",
      "old_mode": 33188,
      "old_path": "crypto/cryptd.c",
      "new_id": "d14b22658d7a57d907344ba9145ae6c2c809660a",
      "new_mode": 33188,
      "new_path": "crypto/cryptd.c"
    }
  ]
}
