In my test sample I create 2048 buffer with size 5kb before application loop:
for(size_t i = 0; i < m_buffers.size(); ++i){
auto& gl_res_id = m_buffers[i];
snprintf(buff_name, 256, "buffer_%zu", i);
glCreateBuffers(1, &gl_res_id);
glObjectLabel(GL_BUFFER, gl_res_id, -1, buff_name);
glNamedBufferStorageEXT(gl_res_id, buff.size(), buff.data(), 0);
glMakeNamedBufferResidentNV(gl_res_id, GL_READ_ONLY);
}
then while the application is running, I delete one buffer each frame throughout 2048 frames:
auto& gl_res_id = m_buffers[frame_id];
glMakeNamedBufferNonResidentNV(gl_res_id);
glObjectLabel(GL_BUFFER, gl_res_id, 0, 0);
glDeleteBuffers(1,&gl_res_id);
The removal time of some buffers may exceed 20ms that more than usual frame time.
Nsight Systems has collected this results: https://ibb.co/rd3s3jf
I have checked my test on 390.77 and 415.27 drivers. It was the same.