)]}'
{
  "commit": "52ac968ab28b2e1eee2e083f19f2a70fdece5a2e",
  "tree": "9ccd48373aeb80ad9c269d5c41dac8f5459d2ff3",
  "parents": [
    "6a39ba7cab67da05b91e215142ce5781e77e5d9f"
  ],
  "author": {
    "name": "Hyman Huang",
    "email": "yong.huang@smartx.com",
    "time": "Thu Oct 17 14:42:54 2024 +0800"
  },
  "committer": {
    "name": "Peter Xu",
    "email": "peterx@redhat.com",
    "time": "Thu Oct 31 15:48:18 2024 -0400"
  },
  "message": "migration: Support periodic RAMBlock dirty bitmap sync\n\nWhen VM is configured with huge memory, the current throttle logic\ndoesn\u0027t look like to scale, because migration_trigger_throttle()\nis only called for each iteration, so it won\u0027t be invoked for a long\ntime if one iteration can take a long time.\n\nThe periodic dirty sync aims to fix the above issue by synchronizing\nthe ramblock from remote dirty bitmap and, when necessary, triggering\nthe CPU throttle multiple times during a long iteration.\n\nThis is a trade-off between synchronization overhead and CPU throttle\nimpact.\n\nSigned-off-by: Hyman Huang \u003cyong.huang@smartx.com\u003e\nReviewed-by: Fabiano Rosas \u003cfarosas@suse.de\u003e\nLink: https://lore.kernel.org/r/f61f1b3653f2acf026901103e1c73d157d38b08f.1729146786.git.yong.huang@smartx.com\n[peterx: make prev_cnt global, and reset for each migration]\nSigned-off-by: Peter Xu \u003cpeterx@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d65bdef6d030c19bed65a9ddab42df2be48fcd1e",
      "old_mode": 33188,
      "old_path": "include/sysemu/cpu-throttle.h",
      "new_id": "420702b8d32091778ea62599480568dbf61cc812",
      "new_mode": 33188,
      "new_path": "include/sysemu/cpu-throttle.h"
    },
    {
      "type": "modify",
      "old_id": "7632dc6143834c3679ed671adb9f76751c20cd45",
      "old_mode": 33188,
      "old_path": "migration/cpu-throttle.c",
      "new_id": "5179019e33b484c0337943ec0b31ed9dd604b13c",
      "new_mode": 33188,
      "new_path": "migration/cpu-throttle.c"
    },
    {
      "type": "modify",
      "old_id": "64c1d0c1db2b00989284e57d52c6fd2df3d32902",
      "old_mode": 33188,
      "old_path": "migration/migration.c",
      "new_id": "9bcc9db4fb2f2bc968978391fbfd5ce89ebbfb1d",
      "new_mode": 33188,
      "new_path": "migration/migration.c"
    },
    {
      "type": "modify",
      "old_id": "b9ce5aa4ffe53fb750e049c907fdc4aaaf1c10d8",
      "old_mode": 33188,
      "old_path": "migration/migration.h",
      "new_id": "7dc59c5e8d23bc9245af54ef66b9323a79c0184a",
      "new_mode": 33188,
      "new_path": "migration/migration.h"
    },
    {
      "type": "modify",
      "old_id": "04fd80590121cc025c132ac83557d7d7bf624b01",
      "old_mode": 33188,
      "old_path": "migration/ram.c",
      "new_id": "b24e45442c277d5ab4e2acb1e55705ddba00f670",
      "new_mode": 33188,
      "new_path": "migration/ram.c"
    },
    {
      "type": "modify",
      "old_id": "9a1959980433fc52caaaeba4c45a482ca3c60125",
      "old_mode": 33188,
      "old_path": "migration/trace-events",
      "new_id": "0638183056537367b65b9b2c70ca8cc4c7fa6006",
      "new_mode": 33188,
      "new_path": "migration/trace-events"
    }
  ]
}
