Skip to content

CPU report: Intel Atom x6212RE #4042

@jerkstorecaller

Description

@jerkstorecaller

I've been meaning to try rr for a long time, and today was that day.

I'm using an embedded system with Intel Atom x6212RE running Debian 12. When I ran rr from the apt repo (v5.3.0), I got this: [FATAL ./src/PerfCounters_x86.h:117:compute_cpu_microarch()] Intel CPU type 0x90660 unknown

This is a Tremont CPU, and I saw that rr's master branch had a IntelTremont entry but it didn't have that CPU type, so I built rr from master after adding 0x90660 to the IntelTremont switch in PerfCounters_x86.h.

The good

I tested rr on a barebone C++ Qt multi-threaded test program and it worked fine. I was able to record and replay.

$ rr replay
GNU gdb (Debian 13.1-3) 13.1
<snip>
Reading symbols from /home/user/.local/share/rr/rrtest-2/mmap_hardlink_4_rrtest...
Remote debugging using 127.0.0.1:17584
Reading symbols from /lib64/ld-linux-x86-64.so.2...
(No debugging symbols found in /lib64/ld-linux-x86-64.so.2)
BFD: warning: system-supplied DSO at 0x6fffd000 has a section extending past end of file
0x00007f31ba44cb20 in ?? () from /lib64/ld-linux-x86-64.so.2
(rr) break TestApp::runPeriodicTask
Breakpoint 1 at 0x560a206f2f2f: file testapp.cpp, line 40.
(rr) continue
Continuing.
[New Thread 12626.12627]
[New Thread 12626.12628]
[Switching to Thread 12626.12627]

Thread 2 hit Breakpoint 1, TestApp::runPeriodicTask (this=0x560a52788500) at testapp.cpp:40
40          QString randomstr = GetRandomString(10);
(rr) next
41          qDebug() << objectName() << "on thread" << ((quintptr)QThread::currentThreadId() % 1000) << "got" << randomstr
(rr) info locals
randomstr = "17RKzcmyIi"
__PRETTY_FUNCTION__ = "void TestApp::runPeriodicTask()"

The bad: many failed tests

I ran make -j$(nproc) test.

I couldn't let it finish because SSH access stopped working when it reached test 381 (mmap_huge).

$ tail -n 5 test_results.log
          Start  379: mmap_adjacent_to_rr_usage
 379/3200 Test  #379: mmap_adjacent_to_rr_usage .........................................   Passed    0.12 sec
          Start  380: mmap_adjacent_to_rr_usage-no-syscallbuf
 380/3200 Test  #380: mmap_adjacent_to_rr_usage-no-syscallbuf ...........................   Passed    0.12 sec
          Start  381: mmap_huge

$ cat test_results.log | grep Failed | wc -l
109

So of the 380/3200 tests attempted before #381 broke the OS, 109/380 failed.

Conclusion

rr seems to work on the Intel Atom x6212RE, but test suite results are awful.

To the devs, I'm not sure if you'd like me to submit a PR for PerfCounters.h, or if the test failures mean you'd rather not consider that CPU as supported. I can also try to use it more seriously with more complex programs when I have some free time.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions