HN user

choudanu4

68 karma
Posts1
Comments33
View on HN

Can Wachy be used to trace kernel code as well? And would you need to do anything specific to get that to work? (How would Wachy find the kernel sources?)

I was thinking this would be pretty cool to use for debugging device drivers on embedded devices especially w.r.t latency.

Does the PhantomData type in Rust do what you want? Or are you talking about something slightly different?

https://doc.rust-lang.org/nomicon/phantom-data.html

https://doc.rust-lang.org/std/marker/struct.PhantomData.html

So

  struct Sender<S> {
    /// Actual implementation of network I/O.
    inner: SenderImpl;  
    /// 0-sized field, doesn't exist at runtime.
    state: S;
  }
I believe could become
  struct Sender<S> {
    /// Actual implementation of network I/O.
    inner: SenderImpl;  
    /// 0-sized field, doesn't exist at runtime.
    _marker: PhantomData<S>;
  }
I've never used this PhantomData personally, so this might be wrong. Cheers!

AMD’s primary advertised improvement here is the use of a TAGE predictor, although it is only used for non-L1 fetches. This might not sound too impressive: AMD is still using a hashed perceptron prefetch engine for L1 fetches, which is going to be as many fetches as possible, but the TAGE L2 branch predictor uses additional tagging to enable longer branch histories for better prediction pathways. This becomes more important for the L2 prefetches and beyond, with the hashed perceptron preferred for short prefetches in the L1 based on power.

I found this paragraph confusing, is it talking about data prefetchers (Which would make sense b/c of the mention of short prefetches) or branch predictors? (Which would make sense b/c of the mention of TAGE and Perceptron)

But I was under the impression that Linux isn't suitable as a real-time operating system (RTOS)[1] (which Microsoft may very well not require for their IoT systems). So the Linux Foundation providing an alternative free kernel meeting RTOS requirements makes perfect sense.

I'm not as clear on the history, but was Linux ever pitched as capable of being real-time OS? I don't think so. The hard requirements for real-time generally lead to very different systems than general-purpose operating systems.

[1] https://en.wikipedia.org/wiki/Real-time_operating_system

They mentioned in the article that the full cache of each die is available. Additionally, EPYC uses the same dies used in Ryzen. I'd look at earlier articles for Ryzen to determine latencies within a single die.

So for whatever cores are enabled on each die, you get the L1/L2 caches for each core as per the Ryzen launch. Additionally, you get all of the shared L3 cache, irrespective of the number of cores disabled per core complex. This pattern follows across all four dies in each socket.

Even when discussing CPU caches, there are policies that can severely outperform LRU, specifically at the Last-Level Cache (LLC).

LLCs often are exposed to access streams where the temporal locality (which is the assumption that makes LRU good) has been filtered out by earlier caches.

For that reason, newer cache replacement policies such as RRIP, SHiP, and Hawkeye have significant headroom to improve upon LRU (and PseudoLRU).

WiFi Direct differs from WiFi Awareness in respect to the presence of the access point. In WiFi direct, there is no access point, and the devices connect directly to each other. With WiFi Awareness, an access point serves as a middle-man, but it is not necessary to access the Internet.

Python to Circuits 9 years ago

I think parametric design could be used here, but to what extent that would be useful, I'm not sure.

Rust vs C Pitfalls 10 years ago

This is an interesting idea that has been explored before in VMS, an old operating system I believe competed with UNIX.

VMS had a feature called CLE (Common Language Enviornment) [1] which defined calling conventions for computing primitives (functions, registers, stacks...you get it) independent of any language. You could call bits of code from all sorts of languages like COBAL, FORTRAN, C, and some others I'm not really familiar with. Because the calling conventions were specifically designed for language interopperability in mind, VMS was implemented in several different languages. Different components were coded in whatever language best expressed them. This directly contrasts with Unix, which we all know champions C.

I'm not too familiar with Unix calling convention specifics, but as I understand, it revolves around C and its memory model. I believe this is what gives some languages difficulty "talking" with each other; if a language doesn't have a memory or execution model close to C's, it needs to translate through a FFI (Foreign Function Interface) [2] before exchanging execution routines efficiently.

[1](https://en.wikipedia.org/wiki/OpenVMS#Common_Language_Enviro...)

[2] (https://en.wikipedia.org/wiki/Foreign_function_interface)

Language feature-wise, I think python 3 has very little complained about it. The chief complaints about python I hear are anything to do with packaging software and multi threading the second of which will hopefully be fixed by 3.7.

Obviously, the 2 to 3 debacle is a constant source of grief, but I don't think that necessarily fits in with the subject at hand: language features that people contest over.

Amen, for linux's copy-to-ram!

I use the Slitaz distribution on my old Compaq computer from 1999, and wow! Even with only 384 MB of RAM, the system is blazing fast, all thanks to copy-to-ram!

To be clear, all this data sharing is on by default, but all the settings to turn this data sharing off do exist, they're just buried in settings (as they should be). Indeed, cutting ties with google is quite possible (just don't sign in with a google account when setting your phone up).

There is another more involved approach that removes the connection altogether, instead of simply closing a valve between your data and Google.

Indeed, what may be alluring would be getting an easy-to-wipe phone (like a Nexus 5) and install a ROM (aftermarket OS) sans Google Play Services (the suite of apps on Android that hooks into Google's Cloud). If you were to do this, you would obtain many of the smartphone's advantages, but still be able to clearly control where your data goes.

Or an alternative option that requires less work: A list of the objectionable features and how to turn them off in one place? An app would be quite a lot of work, but a reputable, single bulletin with the info would help greatly. That way I (and others) could rest assured that we didn't miss one or two settings whilst blindly searching.

The security researcher who was interviewed was not able to garner how the malware gets in as that would require breaking into the infected systems, which he was not prepared to do (as it would be illegal).

The entire podcast was simply statistics, with the occasional repeated reminder to update packages.

The key takeaway was that linux servers when infected are often used as attack vectors for distributing a further set of malware on windows computers (which are the end target). The estimate from the podcast said of the compromised URLs that the researcher investigated, 80% ran some derivative of linux (i.e. apache server) and 20% were windows (an insignificant [~.1%] were other OSs). Another point, the researcher claimed was that 20% of the "compromised" linux URLs were actually infrastructure set up by exploiters themselves, rather than servers taken over forcibly. A final point, the researcher noted that many (no definite statistic here) of the compromised linux servers were running old versions of software (be it apache or whatever).

TL;DR: Linux servers (when compromised) are often used as attack vectors to distribute malware to Windows computers (which are the end targets).

Well, I personally presumed that neural networks would require two or three orders of magnitude more of code. When its revealed that the code is actually much more manageable, individuals (such as myself) take the dive into the subject, knowing that it is something we can at least get through.