[Bug 2101201] Re: The performance of the rand() function degradation

Haixiao Yan 2101201 at bugs.launchpad.net
Thu Mar 13 02:20:10 UTC 2025


apport information

** Tags added: apport-collected jammy

** Description changed:

  The performance of the rand() function on Ubuntu 22.04 has decreased by 62% compared to Ubuntu 21.04.
  Measured on Ubuntu 21.04:  28.070s
  Measured on Ubuntu 22.04:  45.493s
  
  
  Ubuntu 22.04:
  root at ubuntu:/home/ubuntu/meta-test/recipes-example/example/files# hyperfine ./mallocrandfree 
  Benchmark 1: ./mallocrandfree
    Time (mean ± σ):     45.493 s ±  0.229 s    [User: 45.489 s, System: 0.001 s]
    Range (min … max):   45.246 s … 45.858 s    10 runs
    
  root at ubuntu:/home/ubuntu/meta-test/recipes-example/example/files# uname -a
  Linux ubuntu 6.5.0-18-generic #18~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Feb  7 11:40:03 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
  
  root at ubuntu:/home/ubuntu/meta-test/recipes-example/example/files# gcc --version
  gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
  Copyright (C) 2021 Free Software Foundation, Inc.
  This is free software; see the source for copying conditions.  There is NO
  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  
  root at ubuntu:/home/ubuntu/meta-test/recipes-example/example/files# ldd --version
  ldd (Ubuntu GLIBC 2.35-0ubuntu3.6) 2.35
  Copyright (C) 2022 Free Software Foundation, Inc.
  This is free software; see the source for copying conditions.  There is NO
  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  Written by Roland McGrath and Ulrich Drepper.
  
  Ubuntu 21.04:
  
  root at ubuntu:/home/ubuntu/meta-test/recipes-example/example/files# hyperfine ./mallocrandfree 
  Benchmark 1: ./mallocrandfree
    Time (mean ± σ):     28.070 s ±  0.162 s    [User: 28.069 s, System: 0.001 s]
    Range (min … max):   27.772 s … 28.362 s    10 runs
   
  root at ubuntu:/home/ubuntu/meta-test/recipes-example/example/files# uname -a
  Linux ubuntu 5.11.0-16-generic #17-Ubuntu SMP Wed Apr 14 20:12:43 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
  root at ubuntu:/home/ubuntu/meta-test/recipes-example/example/files# ldd --version
  ldd (Ubuntu GLIBC 2.33-0ubuntu5) 2.33
  Copyright (C) 2021 Free Software Foundation, Inc.
  This is free software; see the source for copying conditions.  There is NO
  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  Written by Roland McGrath and Ulrich Drepper.
  root at ubuntu:/home/ubuntu/meta-test/recipes-example/example/files# gcc --version
  gcc (Ubuntu 10.3.0-1ubuntu1) 10.3.0
  Copyright (C) 2020 Free Software Foundation, Inc.
  This is free software; see the source for copying conditions.  There is NO
  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  
  Here is the test code.
  
  #cat mallocrandfree.c
  
  #include <stdio.h>
  #include <stdlib.h>
  #include <time.h>
  #include <unistd.h>
  
  void init()
  {
    // Tell the user what we are doing.
    printf("Running malloc-rand-free test - creating 1,000 byte buffers 2,000,000 times.\n");
    fflush(stdout);
  
    // Seed the random number generator with the current time.
    srand(time(NULL));
  }
  
  void loop()
  {
    for (int i = 0; i < 2000000; ++i)
    {
      //char* bufferPtr = malloc(1000);
      char bufferPtr[1000];
      for (int j = 0; j < 1000; ++j)
      {
        bufferPtr[j] = rand() % 256;
        //bufferPtr[j] = j;
      }
      //free(bufferPtr);
    }
  }
  
  void cleanup()
  {
    exit(0);
  }
  
  
  int main()
  {
    init();
    loop();
    cleanup();
  }
  
  Also can measured with time:
  root at ubuntu:/home/ubuntu/meta-test/recipes-example/example/files# time ./mallocrandfree
  Running malloc-rand-free test - creating 1,000 byte buffers 2,000,000 times.
  
  real    0m45.613s
  user    0m45.602s
  sys     0m0.008s
+ --- 
+ ProblemType: Bug
+ ApportVersion: 2.20.11-0ubuntu82.5
+ Architecture: amd64
+ CasperMD5CheckResult: pass
+ DistroRelease: Ubuntu 22.04
+ InstallationDate: Installed on 2025-03-07 (5 days ago)
+ InstallationMedia: Ubuntu 22.04.4 LTS "Jammy Jellyfish" - Release amd64 (20240220)
+ Package: libc6 2.35-0ubuntu3.9
+ PackageArchitecture: amd64
+ ProcVersionSignature: Ubuntu 6.8.0-52.53~22.04.1-generic 6.8.12
+ RebootRequiredPkgs: Error: path contained symlinks.
+ Tags:  jammy
+ Uname: Linux 6.8.0-52-generic x86_64
+ UpgradeStatus: No upgrade log present (probably fresh install)
+ UserGroups: docker sudo
+ _MarkForUpload: True

** Attachment added: "Dependencies.txt"
   https://bugs.launchpad.net/bugs/2101201/+attachment/5864337/+files/Dependencies.txt

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to glibc in Ubuntu.
https://bugs.launchpad.net/bugs/2101201

Title:
  The performance of the rand() function degradation

Status in glibc package in Ubuntu:
  Incomplete

Bug description:
  The performance of the rand() function on Ubuntu 22.04 has decreased by 62% compared to Ubuntu 21.04.
  Measured on Ubuntu 21.04:  28.070s
  Measured on Ubuntu 22.04:  45.493s

  
  Ubuntu 22.04:
  root at ubuntu:/home/ubuntu/meta-test/recipes-example/example/files# hyperfine ./mallocrandfree 
  Benchmark 1: ./mallocrandfree
    Time (mean ± σ):     45.493 s ±  0.229 s    [User: 45.489 s, System: 0.001 s]
    Range (min … max):   45.246 s … 45.858 s    10 runs
    
  root at ubuntu:/home/ubuntu/meta-test/recipes-example/example/files# uname -a
  Linux ubuntu 6.5.0-18-generic #18~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Feb  7 11:40:03 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

  root at ubuntu:/home/ubuntu/meta-test/recipes-example/example/files# gcc --version
  gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
  Copyright (C) 2021 Free Software Foundation, Inc.
  This is free software; see the source for copying conditions.  There is NO
  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

  root at ubuntu:/home/ubuntu/meta-test/recipes-example/example/files# ldd --version
  ldd (Ubuntu GLIBC 2.35-0ubuntu3.6) 2.35
  Copyright (C) 2022 Free Software Foundation, Inc.
  This is free software; see the source for copying conditions.  There is NO
  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  Written by Roland McGrath and Ulrich Drepper.

  Ubuntu 21.04:

  root at ubuntu:/home/ubuntu/meta-test/recipes-example/example/files# hyperfine ./mallocrandfree 
  Benchmark 1: ./mallocrandfree
    Time (mean ± σ):     28.070 s ±  0.162 s    [User: 28.069 s, System: 0.001 s]
    Range (min … max):   27.772 s … 28.362 s    10 runs
   
  root at ubuntu:/home/ubuntu/meta-test/recipes-example/example/files# uname -a
  Linux ubuntu 5.11.0-16-generic #17-Ubuntu SMP Wed Apr 14 20:12:43 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
  root at ubuntu:/home/ubuntu/meta-test/recipes-example/example/files# ldd --version
  ldd (Ubuntu GLIBC 2.33-0ubuntu5) 2.33
  Copyright (C) 2021 Free Software Foundation, Inc.
  This is free software; see the source for copying conditions.  There is NO
  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  Written by Roland McGrath and Ulrich Drepper.
  root at ubuntu:/home/ubuntu/meta-test/recipes-example/example/files# gcc --version
  gcc (Ubuntu 10.3.0-1ubuntu1) 10.3.0
  Copyright (C) 2020 Free Software Foundation, Inc.
  This is free software; see the source for copying conditions.  There is NO
  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

  Here is the test code.

  #cat mallocrandfree.c

  #include <stdio.h>
  #include <stdlib.h>
  #include <time.h>
  #include <unistd.h>

  void init()
  {
    // Tell the user what we are doing.
    printf("Running malloc-rand-free test - creating 1,000 byte buffers 2,000,000 times.\n");
    fflush(stdout);

    // Seed the random number generator with the current time.
    srand(time(NULL));
  }

  void loop()
  {
    for (int i = 0; i < 2000000; ++i)
    {
      //char* bufferPtr = malloc(1000);
      char bufferPtr[1000];
      for (int j = 0; j < 1000; ++j)
      {
        bufferPtr[j] = rand() % 256;
        //bufferPtr[j] = j;
      }
      //free(bufferPtr);
    }
  }

  void cleanup()
  {
    exit(0);
  }

  
  int main()
  {
    init();
    loop();
    cleanup();
  }

  Also can measured with time:
  root at ubuntu:/home/ubuntu/meta-test/recipes-example/example/files# time ./mallocrandfree
  Running malloc-rand-free test - creating 1,000 byte buffers 2,000,000 times.

  real    0m45.613s
  user    0m45.602s
  sys     0m0.008s
  --- 
  ProblemType: Bug
  ApportVersion: 2.20.11-0ubuntu82.5
  Architecture: amd64
  CasperMD5CheckResult: pass
  DistroRelease: Ubuntu 22.04
  InstallationDate: Installed on 2025-03-07 (5 days ago)
  InstallationMedia: Ubuntu 22.04.4 LTS "Jammy Jellyfish" - Release amd64 (20240220)
  Package: libc6 2.35-0ubuntu3.9
  PackageArchitecture: amd64
  ProcVersionSignature: Ubuntu 6.8.0-52.53~22.04.1-generic 6.8.12
  RebootRequiredPkgs: Error: path contained symlinks.
  Tags:  jammy
  Uname: Linux 6.8.0-52-generic x86_64
  UpgradeStatus: No upgrade log present (probably fresh install)
  UserGroups: docker sudo
  _MarkForUpload: True

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/2101201/+subscriptions




More information about the foundations-bugs mailing list