Lag occurs when deleting resident buffer on linux

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.

Bug report checklist: (as recommended in https://devtalk.nvidia.com/default/topic/790452/general-graphics-programming/reporting-graphics-driver-bugs-/)

  • nvidia-bug-report.sh result in arhive(tar.gz) https://drive.google.com/open?id=1QN3Th_jiJagr5aaKqO7Z2Pk09BlaVCXv
  • GeForce GTX 1080
  • 390.77 and 415.27 drivers.
  • Reproducer and nsight systems report archive(tar.gz) can be downloaded from the above link
  • Launch bin/run.sh from attached archive. Reproducer starts delete allocated buffer one per frame and measure buffer removal time. If removal time more then 2ms, message("time limit(2ms) has been exceeded. Buffer removal time: 23.788000ms. Buffer index: 1024") will be printed to shell. Removal time and buffer index may be different.

Thanks for your attention.

Hello, maybe I should submit this flaw to https://developer.nvidia.com/nvidia_bug/add? Is it a NVIDIA bug report system? I couldn’t find any information about it.