Cu sau fără pthread?

Sunt câteva ghiduri care propun compilarea Ruby e Linux folosind parametrul --enable-pthread. Pe aceeaşi maşină, un ArchLinux pe 64 de biţi, Ruby cu --enable-pthread:


$ time strace -c ruby -e '1.upto(100000) {|i| i.to_s}'
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
100.00    0.048035           0    200009           rt_sigprocmask
  0.00    0.000000           0         6           read
  0.00    0.000000           0        15         8 open
  0.00    0.000000           0         7           close
  0.00    0.000000           0         3         3 stat
  0.00    0.000000           0         7           fstat
  0.00    0.000000           0        23           mmap
  0.00    0.000000           0         7           mprotect
  0.00    0.000000           0         1           munmap
  0.00    0.000000           0         7           brk
  0.00    0.000000           0        14           rt_sigaction
  0.00    0.000000           0         1         1 access
  0.00    0.000000           0         1           execve
  0.00    0.000000           0         1           uname
  0.00    0.000000           0         2           getrlimit
  0.00    0.000000           0         1           getuid
  0.00    0.000000           0         1           getgid
  0.00    0.000000           0         2           geteuid
  0.00    0.000000           0         2           getegid
  0.00    0.000000           0         1           arch_prctl
  0.00    0.000000           0         1         1 futex
  0.00    0.000000           0         1           set_tid_address
  0.00    0.000000           0         1           set_robust_list
------ ----------- ----------- --------- --------- ----------------
100.00    0.048035                200114        13 total

real	0m11.953s
user	0m2.360s
sys	0m6.310s

şi fără --enable-pthread:


$ time strace -c ruby -e '1.upto(100000) {|i| i.to_s}'
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
   nan    0.000000           0         4           read
   nan    0.000000           0         5           open
   nan    0.000000           0         5           close
   nan    0.000000           0         5           fstat
   nan    0.000000           0        16           mmap
   nan    0.000000           0         5           mprotect
   nan    0.000000           0         1           munmap
   nan    0.000000           0         7           brk
   nan    0.000000           0        12           rt_sigaction
   nan    0.000000           0         2           rt_sigprocmask
   nan    0.000000           0         1         1 access
   nan    0.000000           0         1           execve
   nan    0.000000           0         1           uname
   nan    0.000000           0         1           getrlimit
   nan    0.000000           0         1           getuid
   nan    0.000000           0         1           getgid
   nan    0.000000           0         2           geteuid
   nan    0.000000           0         2           getegid
   nan    0.000000           0         1           arch_prctl
------ ----------- ----------- --------- --------- ----------------
100.00    0.000000                    73         1 total

real	0m0.141s
user	0m0.120s
sys	0m0.000s

Nu sunt decât două ordine de mărime diferenţă.

4 Responses

  1. care e de fapt alternativa? adică chestia implicită?
    Dacă cumva alternativa este nptl, atunci e explicabilă diferenţa :)

    dorinlazar - 1 martie at 4:16 am
  2. Da, ştiu, parcă am descoperit apa caldă în sensul că opţiunea default este mai bună decât una setată de mână…

    Uitându-mă prin fişierul de configurare, impresia mea e că se instalează fie cu fastthread-ul lui MenTaLguY, fie cu pthread, ceea ar explica într-o oarecare măsură situaţia.

    Andrei - 1 martie at 4:34 am
  3. Scuza-ma ca sunt pe alaturi dar nu se putea gasi un nume mai bun decat “futex” ?!

    Sau in asta e tot farmecul? =))

    Andrei Rinea - 4 martie at 3:54 am
  4. futex: Fast Userspace muTEX.
    Nu a fost conceput de nişte români, nu a fost intenţia lor să facă o glumiţă, suntem doar noi fraieri că ne amuzăm pe ascuns de la nişte chestii absolut normale :) E ca şi cum în universităţile americane s-ar amuza zilnic de folosirea LaTeX-ului, sau de FAQ-uri.
    Cu alte cuvinte, ar trebui să trecem peste treburile astea, că nu mai avem 10 ani.

    Dorin - 5 martie at 10:35 am

Leave a Reply