It seems I have a bit of free time now to take care about some FreeBSD related things.
As part of this I already committed the UFS/FFS related FEATURE macros which where developed by kibab@ during the Google Summer of Code 2010. The network/ALTQ related FEATURE macros are in the hands of bz@, he already reviewed them and wants to commit them (with some changes) as part of his improvements of parts of the network related code.
The GEOM related FEATURE macros I just send some minutes ago to geom@ for review. All the rest went out to hackers@ for review. The rest in this case is related to AUDIT, CAM, IPC, KTR, MAC, NFS, NTP, PMC, SYSV and a few other things.
If everything is committed, it should look a bit like this if queried from userland (not all features are shown, those are just the ones which are enabled in the kernel in one of my machines):
kern.features.scbus: 1
kern.features.geom_vol: 1
kern.features.geom_part_bsd: 1
kern.features.geom_part_ebr_compat: 1
kern.features.geom_part_ebr: 1
kern.features.geom_part_mbr: 1
kern.features.kposix_priority_scheduling: 1
kern.features.kdtrace_hooks: 1
kern.features.ktrace: 1
kern.features.invariant_support: 1
kern.features.compat_freebsd7: 1
kern.features.compat_freebsd6: 1
kern.features.pps_sync: 1
kern.features.stack: 1
kern.features.sysv_msg: 1
kern.features.sysv_sem: 1
kern.features.sysv_shm: 1
kern.features.posix_shm: 1
kern.features.ffs_snapshot: 1
kern.features.softupdates: 1
kern.features.ufs_acl: 1
GD Star Rating
loading…
GD Star Rating
loading…
Tags: acl,
compat,
google,
ktr,
macros,
ntp,
pmc,
priority scheduling,
shm,
ufs —
I am playing around with the patchset “my” student generated during this years GSoC (the code for all projects is available from Google). In short, it gives you the possibility to query from userland, which optional kernel features are available. I have let him mostly do those features, which are not so easy to detect from userland, or where the detection could trigger an autoload of a kernel module.
I let the output speak for himself, first the output before his patchset:
kern.features.compat_freebsd7: 1
kern.features.compat_freebsd6: 1
kern.features.posix_shm: 1
And now with his patchset:
kern.features.compat_freebsd6: 1
kern.features.compat_freebsd7: 1
kern.features.ffs_snapshot: 1
kern.features.geom_label: 1
kern.features.geom_mirror: 1
kern.features.geom_part_bsd: 1
kern.features.geom_part_ebr: 1
kern.features.geom_part_ebr_compat: 1
kern.features.geom_part_mbr: 1
kern.features.geom_vol: 1
kern.features.invariant_support: 1
kern.features.kdtrace_hooks: 1
kern.features.kposix_priority_scheduling: 1
kern.features.ktrace: 1
kern.features.nfsclient: 1
kern.features.nfsserver: 1
kern.features.posix_shm: 1
kern.features.pps_sync: 1
kern.features.quota: 1
kern.features.scbus: 1
kern.features.softupdates: 1
kern.features.stack: 1
kern.features.sysv_msg: 1
kern.features.sysv_sem: 1
kern.features.sysv_shm: 1
kern.features.ufs_acl: 1
With his patches we have a total of 84 kernel features which can be queried (obviously I do not have all optional options enabled in the kernel which produces this output). All of the features also have a description, and it is easy to add more features. As an example I present what is necessary to produce the kern.features.stack output:
./kern/subr_stack.c:FEATURE(stack, “Support for capturing kernel stack”);
There is also a little userland application (and a library interface) which allows to query several features from scripts/applications with the possibility to pretend a feature is not there (the requirement for this was for ports; pretending a feature is there if it is not was ruled out because such run-time detection is only necessary for things which have to run soon and pretending some feature is there while it is not will cause big problems). Unfortunately the man page for the application is not yet ready, but I’m sure you can figure out how to use it.
The names of the features and the description follows an easy scheme, what is written down in NOTES is used as a name and a description for the feature (an exception is geom_part_X, there we decided to use a common theme (“GEOM partitioning class for XXX”) which is distinct from the corresponding geom_X class). If you have complains about what is used in a specific feature, do not complain to him: change it in NOTES and the feature will follow.
If you have questions, suggestions, or some other interest to contact him, his FreeBSD address is kibab@. Feel free to encourage him to go ahead with the next steps (finishing the man page, splitting up the patches into sensible pieces and presenting them on appropriate mailinglists for review).
GD Star Rating
loading…
GD Star Rating
loading…
Tags: autoload,
google,
gsoc,
kernel module,
kernel stack,
library interface,
posix,
priority scheduling,
shm,
subr —
I counted 18 projects which are given to FreeBSD in this years GSoC. For 3 of them I have some comments.
Very interesting to me is the project which is named Collective limits on set of processes (a.k.a. jobs). This looks a bit like the Solaris contract/project IDs. If this project results in something which allows the userland to query which PID belongs to which set, than this allows some nice improvement for start scripts. For example at work on Solaris each application is a mix of several projects (apache = “name:web” project, tomcat = “name:app” project, Oracle DB = “name:ora” project). Our management framework (written by a co-worker) allows to easily do something with those projects, a “show” displays the prstat (similar to top) info just for processes which belong to the project, a “kill” sends a kill-signal to all processes of the project, and so on. We could do something similar with our start scripts by declaring a namespace (FreeBSD:base:XXX / FreeBSD:ports:XXX?) and maybe number space (depending on the implementation) as reserved and use it to see if processes which belong to a particular script are still running or kill them or whatever.
The other two projects I want to comment upon here are Complete libpkg and create new pkg tools and Complete Package support in the pkg_install tools and cleanup. Both projects reference libpkg in their description. I hope the mentors of both projects pay some attention to what is going on in the other project to not cause dependencies/clashes between the students.
That I do not mention other projects does not mean that they are not interesting or similar, it is just that I do not have to say something valuable about them…
GD Star Rating
loading…
GD Star Rating
loading…
Tags: apache name,
co worker,
contract project,
db name,
freebsd ports,
gsoc,
management framework,
number space,
oracle db,
project ids —
Every mentor in the GSoC has a different way of handling students. Here is what I do.
The student introduced himself to me as requested by our soc-admins in the initial mail to our students. He looked up in which timezone I am (public info) and presented his timezone (and rough location) to me. That is nice. He also offered different communication channels (basically EMail and IM).
I confirmed what he looked up, and presented what I did in the past GSoC in which I participated so that he has an idea if am new to the game or not. I told him that quick/short questions are better asked via IM, while long explanations or questions are better handled via EMail. I also gave him a rough overview when he can expect quick answers from me and when I am not available.
Following are some questions I asked him, so that I get an impression about what to expect and that I can plan a bit (some of those may already be told in student application, but I prefer to have everything in one place):
- From when to when do you intent to spend how much time for the GSoC?
- Any holidays / non-availability planned during the GSoC?
- Any university-stuff (exams/lessons/…) during this time (the uni has higher priority than the GSoC for Google)?
- Anything else in parallel of the GSoC (some paid work, taking care about ill (grand-)parents, …)?
- At what level of knowledge do you see yourself regarding computer-science/programming/OS-concepts (relative to other students and relative to the topic)?
- How do you want to start about the project (where do you want to start, what do you intent to do… just a quick overview… a bit more than saying “I add X”, but not as far as copy&paste of code examples)?
More important than that (IMO), is to give an idea what is expected from the student:
- you have FreeBSD–current installed (on a real PC or in a virtual machine)
- you give me a report about the status each week (“did nothing” is also a valid report, it gives me the info that you are still alive and did not lose interest in the GSoC)
- if your schedule changes in a significant way, give me a little notification (e.g. “I can not do anything next week”)
- if you spend more than 30 minutes with a problem, prepare an email with the problem description; if this preparation did not solve your problem, send me the mail (if you solve the problem 5 minutes later, no problem, I prefer to get a mail too much than to have you stuck with something for an incredible amount of time)
A mentor does not know everything, off course, so the student should be subscribed to hackers@ and current@, and if there is a specific list which matches good to the project he is working on, then to this mailing list too. This allows the mentor to tell the student to send a mail with the questions to one of those lists without much preparation to receive all answers.
Another helpful resource is the FreeBSD kernel cross-reference. For some people my doxygen generated docs of parts of the FreeBSD kernel may be helpful (put unfortunately not a lot of doxygen-markup is within our source code).
I also told that he shall prepare himself that I will ask him to send a reference to a patch of his work long enough before the GSoC ends to an appropriate mailing list, and that comments from there regarding changes he must or shall do are not something bad, but a way to improve the result and/or his skills.
GD Star Rating
loading…
GD Star Rating
loading…
Tags: communication channels,
computer science programming,
google,
grand parents,
initial communication,
initial mail,
os concepts,
rough overview,
student application,
virtual machine —
Seems that I will actively mentor again in this Google Summer of Code (as opposed to just review the submissions from students and/or acting as a fall-back mentor).
The project I will mentor is the “Make optional kernel subsystems register themselves via sysctl”-one from the FreeBSD ideas page.
The student already got into contact with me and it looks like he is motivated (he is already subscribed to several FreeBSD mailinglists, which is not a requirement we have in our GSoC docs).
GD Star Rating
loading…
GD Star Rating
loading…
Tags: docs,
fall back,
freebsd,
google,
gsoc,
kernel,
mailinglists,
mentor,
submissions,
subsystems —