What "Nudge" really do / mean at start of kernel?

I’m write my jupyter kernel for some language, I noticed a wait time before connecting to kernel. And I test with simple kernel, found about 3 or 4 repeats of “Nudge attemp 1”. It seems jupyter simply send “kernel_info_request” repeatly. What that really do? Even after jupyter confirmed it received “kernel_info_reply”. Below are some log from jupyter notebook --debug when open an ipynb with “simple kernel”

[D 2024-04-24 20:36:37.386 ServerApp] Requesting kernel info from 2e3aeacb-138b-4248-809a-e519da1ca136
[D 2024-04-24 20:36:37.386 ServerApp] Connecting to: tcp://127.0.0.1:47691
DEBUG: shell received: [b'\x00*\xe8\x94J', b'<IDS|MSG>', b'98221fc9e08558850e0ceee7515b9b81ab41bdafa35bb3e7033e567dfddec599', b'{"msg_id": "34a291e6-afcf-4c85-8998-0eb3569dc593_376140_0", "msg_type": "kernel_info_request", "username": "xxx", "session": "34a291e6-afcf-4c85-8998-0eb3569dc593", "date": "2024-04-24T12:36:37.386721Z", "version": "5.3"}', b'{}', b'{}', b'{}']
DEBUG: send parts: [b'\x00*\xe8\x94J', b'<IDS|MSG>', b'12a2853f226bbb3797708a67c9d712ebb500f4371beb8bd298c56b1225e85810', b'{"date": "2024-04-24T20:36:37.387333", "msg_id": "dc9aa3be-6d3b-4a4e-8d5f-69ad158bb32c", "username": "kernel", "session": "7fabe425-33dc-4573-ae2f-9b4ea3c416b6", "msg_type": "kernel_info_reply", "version": "5.0"}', b'{"msg_id": "34a291e6-afcf-4c85-8998-0eb3569dc593_376140_0", "msg_type": "kernel_info_request", "username": "xxx", "session": "34a291e6-afcf-4c85-8998-0eb3569dc593", "date": "2024-04-24T12:36:37.386721Z", "version": "5.3"}', b'{}', b'{"protocol_version": "5.0", "ipython_version": [1, 1, 0, ""], "language_version": [0, 0, 1], "language": "simple_kernel", "implementation": "simple_kernel", "implementation_version": "1.1", "language_info": {"name": "simple_kernel", "version": "1.0", "mimetype": "", "file_extension": ".py", "pygments_lexer": "", "codemirror_mode": "", "nbconvert_exporter": ""}, "banner": ""}']
DEBUG: send parts: [b'<IDS|MSG>', b'8cdb4e6739db77f0b7ef6296467684b8638d1d5fc6316ee0186aac81d96a85e3', b'{"date": "2024-04-24T20:36:37.387678", "msg_id": "7667e592-c81a-465a-b339-dcdbea0913d6", "username": "kernel", "session": "7fabe425-33dc-4573-ae2f-9b4ea3c416b6", "msg_type": "status", "version": "5.0"}', b'{"msg_id": "34a291e6-afcf-4c85-8998-0eb3569dc593_376140_0", "msg_type": "kernel_info_request", "username": "xxx", "session": "34a291e6-afcf-4c85-8998-0eb3569dc593", "date": "2024-04-24T12:36:37.386721Z", "version": "5.3"}', b'{}', b'{"execution_state": "idle"}']
[D 2024-04-24 20:36:37.388 ServerApp] Received kernel info: {'protocol_version': '5.0', 'ipython_version': [1, 1, 0, ''], 'language_version': [0, 0, 1], 'language': 'simple_kernel', 'implementation': 'simple_kernel', 'implementation_version': '1.1', 'language_info': {'name': 'simple_kernel', 'version': '1.0', 'mimetype': '', 'file_extension': '.py', 'pygments_lexer': '', 'codemirror_mode': '', 'nbconvert_exporter': ''}, 'banner': ''}
[I 2024-04-24 20:36:37.388 ServerApp] Adapting from protocol version 5.0 (kernel 2e3aeacb-138b-4248-809a-e519da1ca136) to 5.3 (client).
[D 2024-04-24 20:36:37.389 ServerApp] activity on 2e3aeacb-138b-4248-809a-e519da1ca136: status (idle)
[D 2024-04-24 20:36:37.389 ServerApp] 101 GET /api/kernels/2e3aeacb-138b-4248-809a-e519da1ca136/channels?session_id=34a291e6-afcf-4c85-8998-0eb3569dc593 (7e770f223cfd4ce6ab1decb2a6f660a2@127.0.0.1) 4.51ms
[D 2024-04-24 20:36:37.389 ServerApp] Opening websocket /api/kernels/2e3aeacb-138b-4248-809a-e519da1ca136/channels
[I 2024-04-24 20:36:37.389 ServerApp] Connecting to kernel 2e3aeacb-138b-4248-809a-e519da1ca136.
[D 2024-04-24 20:36:37.389 ServerApp] Getting buffer for 2e3aeacb-138b-4248-809a-e519da1ca136
[D 2024-04-24 20:36:37.389 ServerApp] Connecting to: tcp://127.0.0.1:55557
[D 2024-04-24 20:36:37.390 ServerApp] Connecting to: tcp://127.0.0.1:47691
[D 2024-04-24 20:36:37.390 ServerApp] Connecting to: tcp://127.0.0.1:52331
[D 2024-04-24 20:36:37.390 ServerApp] Connecting to: tcp://127.0.0.1:44601
[D 2024-04-24 20:36:37.390 ServerApp] Connecting to: tcp://127.0.0.1:47691
[D 2024-04-24 20:36:37.390 ServerApp] Connecting to: tcp://127.0.0.1:52331
[D 2024-04-24 20:36:37.390 ServerApp] Nudge: attempt 1 on kernel 2e3aeacb-138b-4248-809a-e519da1ca136
DEBUG: shell received: [b'\x00*\xe8\x94K', b'<IDS|MSG>', b'e90c841a43d0ab51fcb4d10649504f9725601587518fa5d8c8ea1c19fc97a9f0', b'{"msg_id": "34a291e6-afcf-4c85-8998-0eb3569dc593_376140_1", "msg_type": "kernel_info_request", "username": "xxx", "session": "34a291e6-afcf-4c85-8998-0eb3569dc593", "date": "2024-04-24T12:36:37.390785Z", "version": "5.3"}', b'{}', b'{}', b'{}']
DEBUG: send parts: [b'\x00*\xe8\x94K', b'<IDS|MSG>', b'89dfcebc1d8a7dd1ebf05906a588a902a4db50e84eebc2ac4f8c1a14aa1101fe', b'{"date": "2024-04-24T20:36:37.391351", "msg_id": "a7bda62f-33e5-4550-b5e3-7f311a4550f1", "username": "kernel", "session": "7fabe425-33dc-4573-ae2f-9b4ea3c416b6", "msg_type": "kernel_info_reply", "version": "5.0"}', b'{"msg_id": "34a291e6-afcf-4c85-8998-0eb3569dc593_376140_1", "msg_type": "kernel_info_request", "username": "xxx", "session": "34a291e6-afcf-4c85-8998-0eb3569dc593", "date": "2024-04-24T12:36:37.390785Z", "version": "5.3"}', b'{}', b'{"protocol_version": "5.0", "ipython_version": [1, 1, 0, ""], "language_version": [0, 0, 1], "language": "simple_kernel", "implementation": "simple_kernel", "implementation_version": "1.1", "language_info": {"name": "simple_kernel", "version": "1.0", "mimetype": "", "file_extension": ".py", "pygments_lexer": "", "codemirror_mode": "", "nbconvert_exporter": ""}, "banner": ""}']
DEBUG: send parts: [b'<IDS|MSG>', b'5da953b3ef970d2bf48dc3c791cc8b9f339b93d5295c9345fa2c7a5fa3a8292e', b'{"date": "2024-04-24T20:36:37.391533", "msg_id": "c381ba4a-575d-45d6-86b2-37ef078a2a98", "username": "kernel", "session": "7fabe425-33dc-4573-ae2f-9b4ea3c416b6", "msg_type": "status", "version": "5.0"}', b'{"msg_id": "34a291e6-afcf-4c85-8998-0eb3569dc593_376140_1", "msg_type": "kernel_info_request", "username": "xxx", "session": "34a291e6-afcf-4c85-8998-0eb3569dc593", "date": "2024-04-24T12:36:37.390785Z", "version": "5.3"}', b'{}', b'{"execution_state": "idle"}']
[D 2024-04-24 20:36:37.391 ServerApp] Nudge: shell info reply received: 2e3aeacb-138b-4248-809a-e519da1ca136
[D 2024-04-24 20:36:37.391 ServerApp] Nudge: resolving shell future: 2e3aeacb-138b-4248-809a-e519da1ca136
DEBUG: control received: [b'\x00\xe4<\x98j', b'<IDS|MSG>', b'7f8f260f74b3724eeaeb3a9ba36363dbb279fdf5da1af9263ac79fa479c2892e', b'{"msg_id": "34a291e6-afcf-4c85-8998-0eb3569dc593_376140_2", "msg_type": "kernel_info_request", "username": "xxx", "session": "34a291e6-afcf-4c85-8998-0eb3569dc593", "date": "2024-04-24T12:36:37.390859Z", "version": "5.3"}', b'{}', b'{}', b'{}']
[D 2024-04-24 20:36:37.392 ServerApp] activity on 2e3aeacb-138b-4248-809a-e519da1ca136: status (idle)
[D 2024-04-24 20:36:37.392 ServerApp] Nudge: IOPub received: 2e3aeacb-138b-4248-809a-e519da1ca136
[D 2024-04-24 20:36:37.392 ServerApp] Nudge: resolving iopub future: 2e3aeacb-138b-4248-809a-e519da1ca136
[I 2024-04-24 20:36:37.396 ServerApp] Adapting from protocol version 5.0 (kernel 2e3aeacb-138b-4248-809a-e519da1ca136) to 5.3 (client).
[D 2024-04-24 20:36:37.396 ServerApp] 101 GET /api/kernels/2e3aeacb-138b-4248-809a-e519da1ca136/channels?session_id=cfb3bde4-fe02-4c4a-9067-52d99068fcf3 (7e770f223cfd4ce6ab1decb2a6f660a2@127.0.0.1) 0.89ms
[D 2024-04-24 20:36:37.396 ServerApp] Opening websocket /api/kernels/2e3aeacb-138b-4248-809a-e519da1ca136/channels
[I 2024-04-24 20:36:37.396 ServerApp] Connecting to kernel 2e3aeacb-138b-4248-809a-e519da1ca136.