Performance drop when moving a memory pointer

O/S : Rocky Linux 9.1 x86_64
CPU : Dual CPU(2 Nodes)
Memory : 256GB (128GB per Node)

I implemented the following program:

void *pBuf, *p;
int idx = 0, byte = 0;
uint64_t total = 0;

posix_memalign((void **)&(pBuf), 4096, 1*MIB);

do {
p = pBuf;

do {
	len = recvfrom(sock, p, 8192, MSG_WAITALL, ...);
	byte += len;
	p += len;
} whle(byte < 1*MIB);

idx++;

} while(1);

The throughput appears stable at the beginning, but suddenly drops sharply at some point.
Therefore, I modified the program to avoid incrementing the buffer pointer, and tested it as follows:

posix_memalign((void **)&(pBuf), 4096, 1*MIB);

do {
p = pBuf;

do {
	len = recvfrom(sock, p, 8192, MSG_WAITALL, ...);
	byte += len;
	/* p += len; */
} whle(byte < 1*MIB);

idx++;

} while(1);

I would appreciate it if you could let me know why the symptom is occurring and a solution to prevent them from happening